PHP preg_replace仅限LINK

时间:2012-08-23 05:59:32

标签: php

我正在尝试preg_replace来检测字符串中的链接。以下示例

$descriptionlink = "This is a test www.google.com";
$descriptionlink = preg_replace('/.*?\b((?:(?:https?|ftp|file):\/\/|www\.|ftp\.)?[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]\.[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]).*?/i', '$1', $descriptionlink);

如果字符串中有链接并且只回显我想要的链接,那么效果很好。现在,如果字符串只是文本,它将回显文本。如果它没有链接,我不希望看到字符串中的文本。

我想要的输出示例

input - This is a test www.google.com
output - www.google.com

上面的内容效果很好,但如果没有链接

,它会执行此操作并回显下面的文本
input - This is a test
output - This is a test

如果输出只是文本,我希望输出为空白。

由于

2 个答案:

答案 0 :(得分:0)

这......将取代除链接之外的所有......

$descriptionlink = preg_replace('/.*?\b((?:(?:https?|ftp|file):\/\/|www\.|ftp\.)?[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]\.[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]).*?/i', '$1', $descriptionlink);

答案 1 :(得分:0)

$descriptionlink = preg_replace('/.*?((?:(?:https?):\/\/|www\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]).*?|.*/i', '$1', $descriptionlink);