2016-03-02 107 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();