Hallo Ich habe versucht, Insert url in String wie dies zu verhindern:Prevent URLs in Zeichenfolge in 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;
}
aber es ist nicht alles verhindern Urls wie folgt aus:
bit.ly/18SuUzJ (with http)
seine nicht verhindern oder wie dieses
bit.ly/18SuUzJ (without http)
oder andere url kürzere Generatoren ...
aber ich muss tun?
Was ist der Zweck der 'str_replace'? Was entscheidet, welches Zeichen * bleibt * und welches * geht *? – ClasG
@ClasG Der Zweck ist, wenn der Benutzer URL wie folgt eingeben: w w w. c o m. com (mit Leerzeichen) entfernen Sie die Leerzeichen und überprüfen Sie, ob er URL eingeben (das gleiche für alle Zeichen im Array) – user165210
Also URLs wie 'http: //example.com/search?q = warum & lang = id # 1' aren ' t erlaubt? – ClasG