你好,我試圖阻止插入的URL字符串是這樣的:防止對URL字符串在PHP
function containsURL($string) {
//check if string contains url
$remove = array(" ", "!", ",", "@", "#", "$", "%", "^", "&", "*", "(", ")");
$string = str_replace($remove, "", $string);
$regex = "((https?|ftp)\:\/\/)?"; // SCHEME
$regex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)[email protected])?"; // User and Pass
$regex .= "([a-z0-9-.]*)\.([a-z]{2,3})"; // Host or IP
$regex .= "(\:[0-9]{2,5})?"; // Port
$regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; // Path
$regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?"; // GET Query
$regex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?"; // Anchor
if(preg_match("/^{$regex}$/", $string)) //contains
return true;
return false;
}
但它不能阻止一切 網址是這樣的:
bit.ly/18SuUzJ (with http)
它不能防止 或像這樣
bit.ly/18SuUzJ (without http)
或其他網址較短的發生器...
但我需要做什麼? tnx
有什麼'str_replace'的目的是什麼?什麼決定哪個角色*停留*,哪個*去*? – ClasG
@ClasG目的是當用戶輸入這樣的網址:w w w。 C o m。 com(帶空格)刪除空格並檢查他是否輸入url(對於數組中的所有字符都是相同的) – user165210
所以URL就像'http://example.com/search?q =爲什麼&lang = id#1'aren'允許? – ClasG