我正在尋找某種形式的輸入安全性,我正在對一個項目進行研究。 基本上我希望標記文本,如果用戶輸入任何形式的URL。PHP在字符串中查找任何形式的URL
IE「欲瞭解更多我的照片訪問myhotpic.net的」
因此,它會檢測到一個URL,然後我可以標誌通過工作人員驗證字符串。 所以我需要檢查任何形式的URL。
還有一個類似的問題在這裏 Finding urls from text string via php and regex? 與答案。但我已經厭倦了這種各種字符串,我沒有得到預期的結果。
例如
$pattern = '#(www\.|https?:\/\/){?}[a-zA-Z0-9]{2,254}\.[a-zA-Z0-9]{2,4}(\S*)#i'; $count = preg_match_all($pattern, 'http://www.Imaurl.com', $matches, PREG_PATTERN_ORDER);
收益爲
array(3) {
[0]=>
array(0) {
}
[1]=>
array(0) {
}
[2]=>
array(0) {
}
}
相匹配,並且沒有錯誤通過preg_last_error()
返回這是爲什麼不工作? Regex中是否有錯誤?當其他用戶使用它時,我會認爲它沒問題。
我似乎無法爲其他地方的問題找到合適的答案。
把'{?}'變成只是'?',它似乎工作正常。不知道'{?}'應該做什麼;我從來沒有見過這樣的事情。 – sgroves
我只想找「www」,「http」,任何東西。[a-z] {2,3}等。如果只想檢測url並且不需要實際提取它,這應該可以正常工作。 – MightyPork
@mightypork如果其中一個字符串包含文字談論HTTP協議?或'www'用來代表笑聲?我不確定這麼簡單是最好的方法。使用完整的正則表達式沒有任何問題;這個不是很複雜。 – sgroves