【发布时间】:2010-07-09 01:40:19
【问题描述】:
我需要一种简单的标记语言来将字符串的不同部分存储在 TEXT 字段中,然后提取这些部分。 所以基本上我想要某种简单的 XML。将它们存储在表字段中很容易,但提取它们......是另一回事。 我设法使用为常规 HTML 完成的简单正则表达式来做到这一点:
|<[^>]+>(.*)</[^>]+>|U
但为了重新组合原始数组(并更普遍地使用标记),我还需要知道标签名称。而那个正则表达式并没有这样做。
例子:
输入文字:
<user_input>Hello! my name is Williams</user_input>
使用上述正则表达式的 preg_match_all() 函数返回:
array
0 =>
array
0 => string '<user_input>Hello! my name is Williams</user_input>' (length=34)
1 =>
array
0 => string 'Hello! my name is Williams' (length=34)
我需要它来返回标签的“user_input”名称。是的,我知道,我很喜欢正则表达式。是的,我知道“使用 XML 解析器”,但这对于我正在做的事情来说太大了。
【问题讨论】:
-
你的正则表达式是贪婪的,任何复杂的东西都会严重破坏。它不检查标签是否匹配。如果有两个以上的标签,它将非常失败。我确定它还有其他错误。
-
“所以基本上我想要某种简单的 XML。”——恰好 PHP 带有一个名为
SimpleXML的扩展:php.net/simplexml