我想解析来自的内容

<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::loadHTMLXpath 查询 经常做得非常出色!

<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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top