首页 > 后端开发 > php教程 > 如何在 PHP 中将反斜杠分隔的字符串转换为关联数组?

如何在 PHP 中将反斜杠分隔的字符串转换为关联数组?

Susan Sarandon
发布: 2024-11-29 18:17:08
原创
393 人浏览过

How to Convert a Backslash-Delimited String to an Associative Array in PHP?

将反斜杠分隔的字符串转换为关联数组

将具有由反斜杠分隔的键值对的字符串转换为关联数组是PHP 编程中的一个常见任务。以下是一些方法:

使用 preg_match_all 和 array_combine:

最有效的选择是使用 preg_match_all 函数和正则表达式来提取键和值。随后, array_combine 函数可用于创建关联数组:

preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p);
$array = array_combine($p[1], $p[2]);
登录后复制

适应不同的分隔符:

相同的方法可以推广到满足不同的情况键值和对分隔符。例如,以下正则表达式可以处理冒号和逗号作为分隔符:

preg_match_all("/ ([^:]+) : ([^,]+) /x", $string, $p);
$array = array_combine($p[1], $p[2]);
登录后复制

允许灵活分隔符:

允许任意分隔符可提供更大的多功能性。以下正则表达式允许键和值用不同的字符分隔:

preg_match_all("/ ([^:=]+) [:=]+ ([^,+&]+) /x", $string, $p);
登录后复制

约束字母数字键:

要将键限制为字母数字字符,以下正则表达式可以受雇:

preg_match_all("/ (\w+) = ([^,]+) /x", $string, $p);
登录后复制

剥离空间和引用:

要消除键和值中的空格和可选引号,可以使用此正则表达式:

preg_match_all("/ \s*([^=]+) \s*=\s* ([^,]+) (?<!\s) /x", $string, $p);
登录后复制

提取 INI 样式配置:

为了提取 INI 样式的配置,以下正则表达式是有用:

preg_match_all("/^ \s*(\w+) \s*=\s* ['\"]?(.+?)['\"]? \s* $/xm", $string, $p);
登录后复制

替代:parse_str

对于已经格式化为“key=value&key2=value2”的字符串,可以使用 parse_str 函数。将其与 strtr 组合可以处理替代分隔符:

parse_str(strtr($string, ":,", "=&amp;"), $pairs);
登录后复制

其他方法:

虽然效率较低,但可以手动分解字符串并循环遍历用于创建关联数组的数组。然而,分析通常表明此方法比正则表达式方法慢。

以上是如何在 PHP 中将反斜杠分隔的字符串转换为关联数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板