正则表达式排除某些东西

时间:2016-03-02 12:00:27

标签: php regex

这是我的Regex用类来获取所有标签:

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">

我希望<a class="figure-contents">忽略fig_3_1

有任何想法要排除吗?

2 个答案:

答案 0 :(得分:0)

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

可能这个有效 但你最好使用simple_html_dom

答案 1 :(得分: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();
相关问题