PHP - pregreplace url

PHP - pregreplace url

我正在尝试将 url 上的 preg_replace 用于 HTML 格式的图像,并将其转换为 BBCode。

发件人:<img src="http://website.com/char/sign/Name+Surname.png">

收件人:[sign]Name+Surname[/sign]

注意:png文件的文件名可以只是Name,它可以包含中间名,如:Name+Middlename+Surname,也可以包含-%2527 喜欢 Carl-PhilipsBob+Mc%2527Donalds

这就是我到目前为止尝试过的方法,但它没有做任何事情。我做错了什么?

$source = array(
    '#\<img src=\"http\:\/\/website.com\/char\/sign\/\>(.+).png\>#isU'
);

$new = array(
    '[sign][/sign]'
);

$text = preg_replace($source, $new, $text);

您以后应该为这些使用解析器 (How do you parse and process HTML/XML in PHP?)。您的正则表达式中有一些拼写错误。

这应该可以完成您想要的:

/<img src="http:\/\/website\.com\/char\/sign\/(.+?)\.png">/

演示(带有正则表达式的解释):https://regex101.com/r/sT6aG9/1

PHP 示例:

$source = '/<img src="http:\/\/website\.com\/char\/sign\/(.+?)\.png">/';
$new = '[sign][/sign]';
$text = '<img src="http://website.com/char/sign/Name+Surname.png">, <img src="http://website.com/char/sign/Bob-Robinson.png">, <img src="http://website.com/char/sign/Michael%2527Ross.png">';
$text = preg_replace($source, $new, $text);
echo $text;

输出:

[sign]Name+Surname[/sign], [sign]Bob-Robinson[/sign], [sign]Michael%2527Ross[/sign]

PHP 演示:http://3v4l.org/WC5oJ