PHP preg_match模式用于解析标签

3
我希望你能为我提供一个在php中用于提取标签内数据的好的preg_match模式。
例如:
 <page>
    <username>someone</username>
    <id>3020778</id>
    <text xml:space="preserve"> The quick brown fox. </text>
 </page>

这将给我一个字符串“ The quick brown fox”。

我尝试使用

preg_match('/<text(.*)?>(.*)?<\/text>/', $content, $match);

但是在其他情况下似乎不起作用。

有没有更好的解决方案或模式?

使用simpleXML比preg_match更快吗?


有一些事情正则表达式非常擅长。在我看来,解析XML不是它们的强项之一。使用一个XML解析器来获取你的数据吧 :) - cdegroot
2
一般来说,解析XML文档几乎总是比使用正则表达式更可靠。 - jerluc
这个问题的答案很好地总结了起来:https://dev59.com/X3I-5IYBdhLWcg3wq6do - tdammers
1
$page = simplexml_load_string($xml); echo $page->username, $page->id, $page->text; 请参阅A simple program to CRUD Node values of an XML fileBest XML Parser for PHPBest Methods to parse HTML - Gordon
1个回答

1
    $a = '<page>
<username>someone</username>
  <id>3020778</id>
  <text xml:space="preserve"> The quick brown fox. </text>
</page>';

preg_match_all("(\<.+\>(.+)\<\/.+\>)U",$a, $r);    
?><pre><? print_r($r);?></pre><?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接