使用preg_replace并为特定域名添加类

时间:2019-07-02 21:56:58

标签: php regex preg-replace

我正在寻找解决方案来更改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);

1 个答案:

答案 0 :(得分:0)

我的猜测是这种表达方式

(<img src=".*?imgur\.com(.*?))(?=\/?\s?>)
替换为$1 class="newClass"

可能就可以了。

Demo 1

测试

$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?>)

会做同样的事情。

Demo 2