Php 如何从字符串中提取每个图像src标记并替换整个img标记

Php 如何从字符串中提取每个图像src标记并替换整个img标记,php,regex,Php,Regex,我希望能够从字符串中读取每个图像的src属性,如果它匹配,则使用不同的格式替换整个img标记。我当前的正则表达式不工作。它将替换img标记的开头,但将所有其他属性保留在其中,如style、rel、title等。以下是我的逻辑示例: $message = 'I AM SENDING YOU AND IMAGE <image src="https://www.google.com/logos/doodles/2017/bessie-colemans-125th-birthday-5751652

我希望能够从字符串中读取每个图像的src属性,如果它匹配,则使用不同的格式替换整个img标记。我当前的正则表达式不工作。它将替换img标记的开头,但将所有其他属性保留在其中,如style、rel、title等。以下是我的逻辑示例:

$message = 'I AM SENDING YOU AND IMAGE <image src="https://www.google.com/logos/doodles/2017/bessie-colemans-125th-birthday-5751652702224384-scta.png" rel="test image" style="display: block;" /> SEE THE IMAGE?';

function replacelinks($message) {
    $ret = preg_replace_callback('/(<img\s+src=["\'])([^"\']+)(["\']\s+[^>]+>)/', function ($m) { $url = parse_url($m[1]); if ($url['path'].$url['query'] == "/logos/doodles/2017/bessie-colemans-125th-birthday-5751652702224384-scta.png") { return '{IMG::'.$url['path'].$url['query'].'}'; } }, $message);
return $ret;
}

echo replacelinks($message);
$message='我正在向您发送图像并查看图像?';
函数替换链接($message){
$ret=preg_replace_callback('/(]+>)/',函数($m){$url=parse_url($m[1]);if($url['path'].$url['query']==“/logos/doodles/2017/bessie-colemans-125th-birth-575165270222384-scta.png”){返回“{IMG::'.$url['path'.$url['query'.];
返回$ret;
}
回显链接($message);

将正则表达式更改为:

/(<img\s+src=["\'])([^"\']+)(["\']\s+[^>]+>)/
/(]+>)/
为此:

~<img[^>]*?src="(.*?(\w+))".*?>~
~~
它起作用了