题
我想解析来自的内容
<td>content</td>
and
<td *?*>content</td>
and
<td *specific td class*>content</td>
我怎样才能用正则表达式、php 和 preg 匹配来做到这一点?
解决方案
我认为此概括起来相当不错的。
在短,不使用正则表达式来解析HTML。相反,看看DOM类,特别是的DOMDocument :: loadHTML
其他提示
如果你有一个 HTML 文档,你真的不应该使用正则表达式来解析它:HTML 还不够“常规”。
更好的解决方案是使用 DOM 解析器加载 HTML 文档——例如, DOMDocument::loadHTML
和 Xpath 查询 经常做得非常出色!
<td>content</td>
:<td>([^<]*)</td>
<td *specific td class*>content</td>
:<td[^>]*class=\"specific_class\"[^>]*>([^<]*)<
@OP,这里有一种方法
$str = <<<A
<td>content</td>
<td *?*>content</td>
<td *specific td class*>content</td>
<td *?*> multiline
content </td>
A;
$s = explode("</td>",$str);
foreach ($s as $a=>$b){
$b=preg_replace("/.*<td.*>/","",$b);
print $b."\n";
}
输出
$ php test.php
content
content
content
multiline
content
不隶属于 StackOverflow