PHP 正则表达式替换 URL 链接地址为指定 URL 的形式
在采集网站文章内容时,原文中通常包含大量指向原站的内链。直接删除这些链接不利于 SEO 优化,此时可以通过正则表达式将原有链接地址统一替换为指定的目标 URL。
例如,采集到的原始 HTML 内容如下:
<p>Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS/HTML 框架。致力于为广大国内开发者提供详尽的中文文档、代码实例等,助力开发者掌握并使用这一框架。</p>
<a href="https://original-site.com/bootstrap">Bootstrap中文网</a>
我们希望将其中的链接地址替换为指定的目标 URL,最终输出为:
<a href="https://target-url.com/bootstrap">Bootstrap中文网</a>
这里涉及使用正则表达式匹配并替换 <a> 标签中的 href 属性值。核心实现代码如下:
<?php
$content = '<a href="https://original-site.com/bootstrap">Bootstrap中文网</a>';
$targetUrl = 'https://target-url.com/bootstrap';
// 正则匹配 <a> 标签中的 href 属性值并替换
// $1 捕获 <a ... href="
// $2 捕获 ">
$pattern = '/(<a\s[^>]*href=")[^"]*("[^>]*>)/i';
$replacement = '$1' . $targetUrl . '$2';
$result = preg_replace($pattern, $replacement, $content);
echo $result;
?>
代码说明:

