Preg替换特定的href

时间:2015-11-21 06:05:19

标签: php regex preg-replace

我只想使用preg_replace()将绝对服务器转换为相对网址。但我的正则表达式知识是零。我怎么能这样做?

示例:

<a href="http://mysite.localhost.com/admin/structure">Some text</a>

<a href="/admin/structure">Some text </a>

谢谢。

2 个答案:

答案 0 :(得分:0)

使用PHP的str_replace()函数可以更快地完成此操作。即:

$href = str_replace('http://mysite.localhost.com', '', $href);

优点是与preg_replace()相比,str_replace()在服务器上的开销要小得多。

答案 1 :(得分:0)

这会将<a>标记中的每个绝对链接转换为相对链接:

<?php

$html = '<a href="http://mysite.localhost.com/admin/structure">Some text</a>';

echo preg_replace('#<a ([^\>]+)href=["\']?https?://[^/]+(/[^\s]+)["\']?([^\>]+)>#i', '<a $1href="$2"$3>', $html);

返回<a href="/admin/structure">Some text</a>