PHP 富文本内容中图片视频音乐文件路径追加域名

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内容。

您可能还会喜欢: