将反斜杠分隔的字符串转换为关联数组
将具有由反斜杠分隔的键值对的字符串转换为关联数组是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, ":,", "=&"), $pairs);
其他方法:
虽然效率较低,但可以手动分解字符串并循环遍历用于创建关联数组的数组。然而,分析通常表明此方法比正则表达式方法慢。
以上是如何在 PHP 中将反斜杠分隔的字符串转换为关联数组?的详细内容。更多信息请关注PHP中文网其他相关文章!