我知道問題標題看起來很重複。但是我在這裏找不到的一些解決方案。通過PHP和正則表達式從文本字符串中查找網址?
我需要找到的URL格式的文本字符串:
$pattern = '`.*?((http|https)://[\w#$&+,\/:;[email protected]]+)[^\w#$&+,\/:;[email protected]]*?`i';
if (preg_match_all($pattern,$url_string,$matches)) {
print_r($matches[1]);
}
使用這種模式我能找到的網址與http://
和https://
這是好。但我有用戶輸入那裏的人添加URL喜歡www.domain.com
即使domain.com
所以,我需要先驗證串在那裏我可以與他們之前共同協議http://
更換www.domain.com
domain.com
。或者我需要用更好的模式來創作?
我不擅長正則表達式,不知道該怎麼做。
我的想法首先找到的網址與http://
和https://
的把它們放在一個數組然後在文本字符串替換這些URL以空格(」「),然後使用其他模式來進行的。但我不確定使用什麼樣的模式。
我用這$url_string = preg_replace($pattern, ' ', $url_string);
但如果去除任何www.domain.com
或domain.com
網址與http://
https://
之間的兩個有效的URL或
如果你能幫助將是巨大的。爲了讓事情變得更加清晰:
我需要一個圖案或其他方法在那裏我可以找到一個文本刺痛的所有URL。 URL的例子是:
- domain.com
- www.domain.com
- http://www.domain.com
- http://domain.com
- https://www.domain.com
- https://domain.com
的感謝! 5.
您是否驗證來自帶有URL字段的表單的用戶輸入?或者,你是否在抓取頁面/文本塊來生成其中的URL列表?您正在嘗試解析的「文本字符串」的完整示例可能會有所幫助。 – baraboom 2011-05-25 16:54:59
@baraboom:是的,來自用戶輸入的文本框。在這裏人們可能會輸入像這樣的twitter:twitter.com/user facebook:http://facebook.com等.. – Sisir 2011-05-25 17:26:25