如果url不存在,则使用正则表达式将相对URL替换为绝对URL

时间:2017-05-14 08:32:08

标签: php regex url

我有很多新闻项目的数据库,我有这样的相对网址

/index.php?news etc...

我需要将这些网址转换为绝对网址,如下所示:

http(or - s)//example.com/index.php?news etc..

此外,我有这个代码,它的工作原理

$regex = '~<a([^>]*)href=["\']([^"\']*)["\']([^>]*)>~';
$replace = '<a$1href="'. $absolute_url .'/$2"$3>';
$data->introtext = preg_replace($regex, $replace, $news->introtext); 

其中$news->introtext是我的文字,有许多链接,例如:

<a href="/index.php">some text</a> some text here <a href="https://facebook.com/etc">

代码的工作原理如下:

<a href="http://example.com/index.php">some text</a> some text here <a href="http://example.com/https://facebook.com/etc">

如果链接类似http://example.com/

,我不想添加https://facebook.com/etc

1 个答案:

答案 0 :(得分:0)

找到好方法:

$data->introtext = preg_replace("#(<\s*a\s+[^>]*href\s*=\s*[\"'])(?!http)([^\"'>]+)([\"'>]+)#", '$1http://example.com/$2$3', $news->introtext);

如果网址未退出,则添加网址