我有很多字符串(Twitter推文),在回显它们时我想删除链接。
我无法控制字符串,即使所有链接都以http开头,它们可能以“ /”或“ ;”结束,并且可以跟随空格或不跟随空格。此外,有时链接和其前面的单词之间没有空格。
这样的字符串示例:
The Third Culture: The Frontline of Global Thinkinghttp://is.gd/qFioda;via @edge
我尝试过使用preg_replace,但无法得出适用于所有异常情况的解决方案:
<?php echo preg_replace("/\http[^)]+\;/","",$feed->itemTitle); ?>
你有什么想法应该怎么做?
编辑:我已经尝试过
<?php echo preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', ' ', $feed->itemTitle); ?>
但仍然没有成功。
编辑2:我找到了这个:
<?php echo preg_replace('^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$^',' ', $feed->itemTitle); ?>
这个方法可以按预期删除链接,但是当链接前面没有空格时,它也会删除整个字符串。
$feed->itemTitle = preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', ' ', $feed->itemTitle);
- Burak