DOMDocument:如何解析像标签一样的bbcode?
问题描述:
我对使用DOMDocument的查询有问题。 我会在字符串中使用“bbcode like”标签并查找属性data_id。DOMDocument:如何解析像标签一样的bbcode?
我使用下面的代码THP但我总是得到这些警告: 警告:DOMXPath ::查询():无效的表达
的 “设置高亮样” 的代码,我想恩用途:
[sondage data_id=1]
PHP代码
$doc = new DOMDocument();
$doc->loadHTML($row->text);
$selector = new DOMXPath($doc);
$result = $selector->query('//[sondage');
foreach($result as $node) {
echo $node->getAttribute('data_id');
}
感谢您的帮助
答
正如其他人已经指出的,bbcode不是值XML标记,所以不会被解析。
假设你所有的方括号BB代码(A重要的假设,授予),你可以用尖括号“取代”他们的零件,使它们看起来像标签:
$text = str_replace(array("[","]"),array("<",">"),$row->text;
//$text now contains 'XML-ised' content
但是,如果你有任何方括号不在BB代码,这是可能的,这将打破...
或者,你可以进一步使用正则表达式让你的所有BBCode的元素,然后分析他们从那里:
$text = $row->text;
preg_match_all('#\[[a-z]+.*?\](.*?)\[/[a-z]+\]#is',$text,$matches);
//$matches will contain all your BBCode, which you can then parse further as required.
它无效的HTML,所以没有什么可以解析的。 – Youri
对不起,DOMDocument只接受XML标签。 –
@Youri有另一种解决方案吗?获取所有bbcode标签并获取data_id属性? – Raphael