0

我正在尝试 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

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

谢谢

4

2 回答 2

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);
于 2012-08-23T06:12:11.773 回答
0
$descriptionlink = preg_replace('/.*?((?:(?:https?):\/\/|www\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]).*?|.*/i', '$1', $descriptionlink);
于 2012-08-23T06:41:39.917 回答