我正在寻找解决方案来更改src imgur处的所有img标签。 我已经尝试过了,一般来说这是可行的,但问题可能是如果imgur在这种情况下更改其子域,则此正则表达式将无法正常工作。
为了更加清楚,我只需要添加类名,所有托管在imgur上的图像也将添加。
$string = 'I have been searching <img src="https://i.imgur.com/NknpNdu.jpg" alt=""> for...';
$regex = '#<img src="https://i.imgur.com([^"/]*/?[^".]*\.[^"]*)"([^>]*)>#';
$replace = '<img class="newClass" src="https://i.imgur.com/$1">';
$Content = preg_replace($regex, $replace, $string);
答案 0 :(得分:0)
我的猜测是这种表达方式
(<img src=".*?imgur\.com(.*?))(?=\/?\s?>)
替换为$1 class="newClass"
的可能就可以了。
$re = '/(<img src=".*?imgur\.com(.*?))(?=\/?\s?>)/s';
$str = 'I have been searching <img src="https://i.imgur.com/NknpNdu.jpg" alt=""> for... I have been searching <img src="https://i.imgur.com/NknpNdu.jpg" alt=""> for... I have been searching <img src="https://i.imgur.com/NknpNdu.jpg" alt=""> for... I have been searching <img src="https://i.imgur.com/NknpNdu.jpg" alt="" /> for... ';
$subst = '$1 class="newClass"';
$result = preg_replace($re, $subst, $str);
echo $result;
或更简单,边界更少,此表达式:
(<img .*?imgur\.com(.*?))(?=\/?\s?>)
会做同样的事情。