我想用正则表达式在PHP中替换源属性(可以是图像或任何标记)。
我有一个像这样的字符串:
我有一个像这样的字符串:
$string2 = "<html><body><img src = 'images/test.jpg' /><img src = 'http://test.com/images/test3.jpg'/><video controls="controls" src='../videos/movie.ogg'></video></body></html>";
我想把它变成:
$string2 = "<html><body><img src = 'test.jpg' /><img src = 'test3.jpg'/><video controls="controls" src='movie.ogg'></video></body></html>";
这是我尝试过的内容:
$string2 = preg_replace("/src=["']([/])(.*)?["'] /", "'src=' . convert_url('$1') . ')'" , $string2);
echo htmlentities ($string2);
基本上它没有改变任何东西,并给了我有关未转义字符串的警告。
$1
不是把字符串内容发送吗?这里出了什么问题吗?
而 convert_url 函数是我之前发布的一个示例:
function convert_url($url)
{
if (preg_match('#^https?://#', $url)) {
$url = parse_url($url, PHP_URL_PATH);
}
return basename($url);
}
它应该剥离掉URL路径,只返回文件名。
preg_replace_callback
。您不能像平常那样使用convert_url('$1')
,因为这会在 $1 存在之前进行评估。 - Gordon