2016-03-02 121 views
-1

这是我的正则表达式与类获取所有标签:正则表达式来排除一些

preg_match_all('/<\s*\w*\s*class\s*=\s*"?\s*([\w\s%#\/\.;:_-]*)\s*"?.*?>/',file,$matches); 

它带班的所有标签匹配像<a class="abc">

的问题是,如果任何标记包含类比以前额外属性这个正则表达式无法得到它。

例如为:<a id="fig_3_1" class="figure-contents">

我想忽略fig_3_1

任何想法将它排除在外<a class="figure-contents">

+4

使用HTML解析器,而不是正则表达式。 – Phylogenesis

回答

0
<\s*\w*.*?\s*class\s*=\s*"?\s*([\w\s%#\/\.;:_-]*)\s*"?.*?> 

也许这工作 但你最好使用simple_html_dom

0

看看this amazing SO post和重新考虑。

您很可能会更好地使用html解析器。你可以使用DOM模型。

一个简单的例子,它如何在下面使用

$dom = new DOMDocument; 
$dom->loadHTML($html); 
$images = $dom->getElementsByTagName('img'); 
foreach ($images as $image) { 
    $image->setAttribute('src', 'http://example.com/' .$image->getAttribute('src')); 
} 
$html = $dom->saveHTML();