我有一個想法,即使用PHP刪除字符串中的所有鏈接。preg_replace刪除以http://開頭並以空格結尾的所有單詞
我需要的preg_replace刪除並去除所有詞語開頭:
http://或https://或萬維網。或www3。或者ftp://
並以白色空格結束。
例如:你好http://dsqdsq.com/fdsfsd?fsdflsd享受!
這將是:你好享受!
感謝
我有一個想法,即使用PHP刪除字符串中的所有鏈接。preg_replace刪除以http://開頭並以空格結尾的所有單詞
我需要的preg_replace刪除並去除所有詞語開頭:
http://或https://或萬維網。或www3。或者ftp://
並以白色空格結束。
例如:你好http://dsqdsq.com/fdsfsd?fsdflsd享受!
這將是:你好享受!
感謝
$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);
這樣的事情?只是把我的頭,不檢查
/(http:\/\/(.*?)\s)/i
前我會做這種方式:
$output = preg_replace('!\b((https?|ftp)://)?www3?\..*?\b!', '', $input);
其中:
\b
);然後刪除所有到下一個單詞邊界的文本。使用\b
通常優於檢查空格。 \b
是一個零寬度(意思是它不佔用輸入的任何部分),匹配字符串的開始,字符串的結尾,從單詞到非單詞字符的轉換或從非單詞轉換爲一個字的字符。
+1 \ b!真的很好的運營商知道!你每天學習新的東西! – 2010-01-12 20:51:03
嗯..嘗試從克萊
$pattern=array(
'`((?:https?|ftp)://\S+[[:alnum:]]/?)`si',
'`((?<!//)(www\.\S+[[:alnum:]]/?))`si'
);
$output = "http://$1";
$input = // set some url here;
preg_replace($pattern,$output,$input);
解決方案不能正常工作,因爲。 (點)也是單詞邊界,所以我們應該用空白標記\ s,而不是字bouadry底:
$output = preg_replace('!\b((https?|ftp)://)?www3?\..*?\s!', '', $input);
不要忘記FTP:// – 2010-01-12 20:46:47
這是否需要在開始的空間 - 即行啓動與URL不匹配? – Simon 2010-01-12 20:47:40