我想知道用PHP删除字符串中的所有链接。
我需要一个preg_replace来删除并删除以:
开头的所有单词http://或https://或www。或www3。或ftp://
以白色空格结束。
示例:你好http://dsqdsq.com/fdsfsd?fsdflsd享受!
它将是:你好享受!
由于
答案 0 :(得分:3)
我会这样做:
$output = preg_replace('!\b((https?|ftp)://)?www3?\..*?\b!', '', $input);
其中:
\b
); 然后删除直到下一个单词边界的那个和所有文本。
注意:使用\b
通常优于检查空格。 \b
是一个零宽度(意味着它不消耗任何输入的一部分),它匹配字符串的开头,字符串的结尾,从单词到非单词字符的转换或从a的转换。非单词到单词字符。
答案 1 :(得分:2)
$string = 'hello http://dsqdsq.com/fdsfsd?fsdflsd enjoy !';
$stripped_string = preg_replace('; ((ftp|https?)://|www3?\.).+? ;', ' ', $string);
更新:这是使用\ b而不是空格,这将更好用。非常感谢cletus!
$string = 'hello http://dsqdsq.com/fdsfsd?fsdflsd enjoy !';
$stripped_string = preg_replace(';\b((ftp|https?)://|www3?\.).+?\b;', ' ', $string);
答案 2 :(得分:0)
/(http:\/\/(.*?)\s)/i
答案 3 :(得分:0)
嗯..试试
$pattern=array(
'`((?:https?|ftp)://\S+[[:alnum:]]/?)`si',
'`((?<!//)(www\.\S+[[:alnum:]]/?))`si'
);
$output = "http://$1";
$input = // set some url here;
preg_replace($pattern,$output,$input);
答案 4 :(得分:0)
Cletus的解决方案无法正常工作,因为。 (点)也是单词边界所以我们应该使用空白标记\ s而不是最后的单词bouadry:
$output = preg_replace('!\b((https?|ftp)://)?www3?\..*?\s!', '', $input);