正则表达式匹配<a> tag

时间:2016-11-02 16:04:43

标签: php regex preg-match

I want to select a tag without custom class in my string have another a tag cannot select that's, String :

<h3 class="r"><a dir="rtl" class="sla" href="#"><span>test<span></a></h3>
<h3>test1</h3>
<h3 class="r"><a class="test" href="#">test2</a></h3>
<h3>test3</h3>

my Reg:

preg_match_all('@<h3\s*class="r">\s*<a[^<>]*href="([^<>]*)"[^<>]*>(.*)</a>\s*</h3>@siU',
        $file, $matches);

how i can select all in pattern a tag without class="sla"

1 个答案:

答案 0 :(得分:1)

使用正则表达式“否定前瞻”<a(?![^<>]*sla)...会丢弃“a”标记内所有“sla”的所有结果。

preg_match_all('@<h3\s*class="r">\s*<a(?![^<>]*sla)[^<>]*href="([^<>]*)"[^<>]*>(.*)<\/a>\s*<\/h3>@siU',
$file, $matches)

您还可以使用更准确的声明:<a(?![^<>]*class=\"sla\")...

有关“环视”表达式的其他信息:http://www.regular-expressions.info/lookaround.html