如何从这个由 3 个图像标记组成的字符串中选择不包含的字符串?
id="img_menu":
字符串:
<img class="alignnone " blabla />
<img class="dddd " blabla />
<img style="blalbla" id="img_menu"/>
此正则表达式选择所有标记:
/<img*[^>]*[^>]./
但是我没有设法添加正确的代码来选择第三个IMG! 请帮忙。
在一段时间/全局循环中使用多行/非点全部模式。
^(?!.*id='"img_menu'").*$
您可以这样做,因为它只是一个字符串而不是 html。
这对我有用,尽管环顾四周不是我的强项,所以可能有更有效的方法:
.JS
var str = '<img class="alignnone " blabla />'n'
<img class="dddd " blabla />'n'
<img style="blalbla" id="img_menu"/>';
str.match(/(?!<img.+?id="img_menu".*?'/>)<img.+?'/>/g);
//["<img class="alignnone " blabla />", "<img class="dddd " blabla />"]
小提琴
.PHP
<?php
$code = '<img class="alignnone " blabla />
<img class="dddd " blabla />
<img style="blalbla" id="img_menu"/>';
$newStr = preg_replace('/(?!<img.+?id="img_menu".*?'/>)<img.+?'/>/','[matched_img]',$code);
var_dump(htmlentities($newStr));
?>
输出:
string(92) "[matched_img] [matched_img] <img style="blalbla" id="img_menu"/>"