function appendDomainToMediaPaths($content, $domain) {
// 使用正则表达式匹配图片、视频、音频标签
$pattern = '/<[img|video|audio][^>]*src="(?<path>[^"]+)"[^>]*>/iu';
preg_match_all($pattern, $content, $matches);
$replacements = [];
foreach ($matches['path'] as $path) {
// 判断是否已经包含了协议和域名
if (parse_url($path, PHP_URL_SCHEME) === null) {
$replacements[] = $domain . '/' . ltrim($path, '/');
} else {
$replacements[] = $path;
}
}
// 替换原来的路径为包含域名的完整路径
return preg_replace($pattern, '<${0} src="${1}"${3}>', $content, 1, $count, $replacements);
}
// 使用示例
$content = '<p>这里有一张图片:<img src="/images/photo.jpg" alt="描述">';
$content .= '<video src="/videos/movie.mp4" controls></video>';
$content .= '<audio src="/audios/music.mp3"></audio></p>';
$domain = 'http://www.yourdomain.com';
$newContent = appendDomainToMediaPaths($content, $domain);
echo $newContent;
这段代码定义了一个函数appendDomainToMediaPaths
,它接受HTML内容和要追加的域名作为参数。函数使用正则表达式匹配内容中的图片、视频、音频标签,并检查路径是否已经包含协议和域名。如果没有,它会生成一个包含完整域名的路径,然后替换原来的路径。最后,它返回修改后的HTML内容。