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