我有许多字符串(推文推文),当我回复它时,我想从中删除链接.
我无法控制字符串,即使所有链接都以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); ?>
如果你想删除所有内容,链接和链接后,例如通过你的例子中的东西,下面可能会帮助你:
$string = "The Third Culture: The Frontline of Global Thinkinghttp://is.gd/qFioda;via @edge"; $regex = "@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?).*$)@"; echo preg_replace($regex,$string);
如果你想保留它们:
$string = "The Third Culture: The Frontline of Global Thinkinghttp://is.gd/qFioda;via @edge"; $regex = "@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@"; echo preg_replace($regex,$string);