我正在使用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内容,我必须在其中找到图像并替换该图像的路径,因此路径将不相同。
提前致谢。
答案 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;
我剪切了最后一个“/”字符,然后连接字符串和字符以获得所需的输出。