gpt4 book ai didi

php - 正则表达式替换 PHP 中的 html src 属性

转载 作者:太空狗 更新时间:2023-10-29 13:09:15 30 4
gpt4 key购买 nike

我正在尝试使用正则表达式替换 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 的功能来 self 之前发布的示例:

function convert_url($url)
{
if (preg_match('#^https?://#', $url)) {
$url = parse_url($url, PHP_URL_PATH);
}
return basename($url);
}

它应该去除 url 路径并只返回文件名。

最佳答案

不要在 HTML 上使用正则表达式 - 使用 DOMDocument类。

$html = "<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>";

$dom = new DOMDocument;
libxml_use_internal_errors(true);

$dom->loadHTML( $html );
$xpath = new DOMXPath( $dom );
libxml_clear_errors();

$doc = $dom->getElementsByTagName("html")->item(0);
$src = $xpath->query(".//@src");

foreach ( $src as $s ) {
$s->nodeValue = array_pop( explode( "/", $s->nodeValue ) );
}

$output = $dom->saveXML( $doc );

echo $output;

输出如下:

<html>
<body>
<img src="test.jpg">
<img src="test3.jpg">
<video controls="controls" src="movie.ogg"></video>
</body>
</html>

关于php - 正则表达式替换 PHP 中的 html src 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10658348/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com