【发布时间】:2015-07-23 19:21:53
【问题描述】:
在 PHP 中,我需要解析字符串中的参数,例如:
{keyword name1=val1 name2='val2' name3="val3"}
最终得到如下数组:
{
name1 => "val1",
name2 => "val2",
name3 => "val3"
}
每个值可能被引用也可能不被引用,并且可以使用单引号或双引号引起来。此外,值可能包含空格、标点符号甚至相反的引号。例如,这可能是一个有效的属性:
name1="Isn't this OK?"
理想情况下,它还允许在值内使用转义引号,但这只是一个奖励。我希望有一个功能,就像HTML 浏览器解析器在解析HTML 标记上的属性时所做的那样。
我的第一个想法是一次遍历一个字符的字符串,检查等号后面的字符是否是引号,然后寻找下一个匹配的引号。但这似乎很乏味,并不是解析字符串的最有效方法。
我看到的使用正则表达式的例子都超出了我的想象,难以理解,而且对我来说太复杂而无法维护。
我也看到了使用 DOMdocument 的示例,但是当值中有空格或逗号时,它们无法正确解析。
我需要在PHP 中执行此操作,而不是Javascript。
是否有一个函数(在PHP 中)如果我只传递属性部分,它将返回数组?
【问题讨论】:
-
name1 name2 是正规的吗?
标签: php arrays regex parsing html-parsing