在php中使用preg_replace仅替换图像的路径

时间:2014-11-12 13:12:29

标签: php html regex preg-replace

我正在使用preg_replace来改变图像路径,但图像名称除外:

<img src="http://www.ByPasspublishing.com/uploadedImages/TinyUploadedImage/SOC_Aggression_Define_Fig Territorial Aggression.jpg" />

要     

以下是我尝试过的代码,但它取代了总路径。请帮我解决这个问题:

$html = preg_replace('/<img([^>]+)src="([^"]+)"/i','<img\\1src="newfolder"',$slonodes[0]->SLO_content);

另一件事是$slonodes[0]->SLO_content返回一个HTML内容,我必须在其中找到图像并替换该图像的路径,因此路径将不相同。

提前致谢。

2 个答案:

答案 0 :(得分:1)

或者,您可以使用HTML Parser执行此任务,特别是DOMDocument:

$html = '<img src="http://www.ByPasspublishing.com/uploadedImages/TinyUploadedImage/SOC_Aggression_Define_Fig Territorial Aggression.jpg" />';
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();

$img = $dom->getElementsByTagName('img')->item(0);
$new_src = 'newfolder/' . basename($img->getAttribute('src'));
$img->setAttribute('src', $new_src);
echo $dom->saveHTML($img);

答案 1 :(得分:0)

为什么要使用正则表达式? O.o

您可以这样做:

$path = "http://www.ByPasspublishing.com/uploadedImages/TinyUploadedImage/SOC_Aggression_Define_Fig Territorial Aggression.jpg";
$pathNew = "newfolder/".substr(strrchr($path, "/"), 1);
print $pathNew;

我剪切了最后一个“/”字符,然后连接字符串和字符以获得所需的输出。

相关问题