Php 返回值为';customvariablename';

Php 返回值为';customvariablename';,php,Php,我正在尝试在文件中爬行,并在每个图像路径的开头插入“../../”。但不幸的是,脚本超时了,因为在添加它之前只花了几秒钟的时间就运行了,所以有些东西告诉我它没有做我认为应该做的事情。我就是这样做的: $filedata = substr_replace(substr($filedata,$imageBeginning,1),"../../",$imageBeginning); 我正在爬行整个HTML文件来完成这一点,所以我需要一个有效的解决方案。非常感谢您的帮助。这是完全未经测试的,但类似以下

我正在尝试在文件中爬行,并在每个图像路径的开头插入“../../”。但不幸的是,脚本超时了,因为在添加它之前只花了几秒钟的时间就运行了,所以有些东西告诉我它没有做我认为应该做的事情。我就是这样做的:

$filedata = substr_replace(substr($filedata,$imageBeginning,1),"../../",$imageBeginning);

我正在爬行整个HTML文件来完成这一点,所以我需要一个有效的解决方案。非常感谢您的帮助。

这是完全未经测试的,但类似以下内容:

preg_replace('/(<img\s+.*?src=")(.*\\.(?:jpg|png|bmp|gif).*?>)/', '$1../../$2', $filedata);
preg_replace(“/()/”、“$1.././$2”、$filedata);
说明:您正在正则表达式中进行2次捕获。第一个是从
img
标记开始到
src
属性开始的所有内容。第二个是
src
属性值及其后面的所有内容。然后,你只需在替换中插入“..…”,


正则表达式似乎是一项不错的工作:)使用正则表达式查找图像的最佳方法是什么?现在我发现每个文件扩展名都以“.jpg”、“.png”、“.bmp”或“.gif”结尾,然后追溯到它前面的第一个引号。preg_replace()需要至少3个参数,2个给定参数。此外,一旦问题解决,这是否合适?preg_replace(“/()/”,substr($filedata,0,$imagestart)。“../”.substr($filedata,($imagestart+1));是的,我只是忘了添加
$subject
参数,这是您要匹配/替换的文本。已修复上述问题。如果您的第二条评论不正确,请阅读我发布的链接中的
preg\u replace
说明,特别是与
$replacement
参数下所述的“参考”相关的说明。简言之,您不需要使用
substr
,因为正则表达式已经在为您这样做了。不知何故,我忽略了这一点。很抱歉,我是一个痛苦的人,昨天来StackOverflow的时候我很沮丧/疲惫。非常感谢你的帮助。