正则表达式意外改变变量值?

时间:2013-02-04 20:23:06

标签: php regex

这是独家新闻。我正在使用正则表达式来查找图像并在其源的开头插入“../../”。但是,它不仅不起作用,而且当我运行RegEx时,保存图像文件名称(包括扩展名)的变量也在变化。如果我注释掉'preg_replace'行,变量会正确地回显。谁能告诉我什么是错的?提前谢谢!

$imagefile = substr($filedata,($jpgbeginning+1),(($jpg+3)-$jpgbeginning));
$filedata = preg_replace('/(<img\s+.*?src=")(.*\\.(?:jpg|png|bmp|gif).*?>)/', '<img src="../'.$imagefile.'" />', $filedata);
echo $imagefile."<br /><br />";

此外,在正则表达式中它将“../”部分加倍,因此实际上由于某种原因输出为../../。再次感谢!

1 个答案:

答案 0 :(得分:0)

以下preg_replace应该有效:

preg_replace("/(<img\s+src\s*=\s*\")(.+?)(?=\")/","$1../../$2", HTML);