我正在尝试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
如果输出只是文本,我希望输出为空白。
由于
答案 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);