如果我理解正确,您正在尝试删除以“dealer.jpg”结尾的img 标签(无论域),对吗?试试这个:
$content = '<b>this is a content</b><img src=http://adress.com/as5.jpg><br> this is a content <img src=http://www.another-adress.com/dealer.jpg>';
$content = preg_replace('/<img src=[A-z0-9-_":\.\/]+\/dealer\.jpg>/', '', $content);
var_dump($content);
编辑
第二个示例将匹配img 标记,即使它具有其他属性,例如alt、width 等(但同样,必须以“dealer.jpg”结尾)
$content = '<b>this is a content</b><img src="http://adress.com/as5.jpg"><br> this is a content <img alt="dealer-image" width="120" height="40" src="http://www.another-adress.com/dealer.jpg">';
$content = preg_replace('/<img[A-z0-9-_:="\.\/ ]+src="[A-z0-9-_:\.\/]+\/dealer\.jpg">/', '', $content);
var_dump($content);
Obs:我更改了最初的 $content,因为我注意到它缺少 src 属性的双引号。不确定是错字还是你的字符串真的像这样。
编辑 2
这是一个使用 DOM 的示例(猜测是这里最好的方法,因为属性的顺序可能会改变):
$content = '<b>this is a content</b><img src="http://adress.com/as5.jpg"><br> this is a content <img alt="dealer-image" width="120" height="40" src="http://www.another-adress.com/dealer.jpg">';
// creates a DOMDocument based on your string, and wraps it in a div
$dom = new DOMDocument();
$dom->loadHTML("<div>{$content}</div>", LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);
// get all img tags
$imgs = $dom->getElementsByTagName('img');
foreach ($imgs as $img) { // if they have that src, remove it from $dom
if (strpos($img->getAttribute('src'), 'dealer.jpg')) {
$img->parentNode->removeChild($img);
};
}
// get all the content of my first div, and print it
$newContent = $dom->getElementsByTagName('div')->item(0);
foreach ($newContent->childNodes as $childNode) {
var_dump($dom->saveHTML($childNode));
}