Was ist die einfachste und schnellste Weg, um zu überprüfen, ob Zeichenfolge einzelne URL oder TEXT ist (das könnte Urls enthalten)Wie trennt man mögliche URI von anderen Inhalten in PHP?
mögliche Szenarien:
// successful scenario
$example[] = 'http://sub-domain.my-domain.com/folder/file.php?some=param';
// successful scenario
$example[] = '/assets/scripts/jquery.min.js?v=1.4';
// successful scenario
$example[] = 'jquery.min.js';
// this scenario should fail validation
$example[] = "http://www.domain.com welcome text\n and some other http://www.domain.com";
// this scenario should fail validation
$example[] = "scriptVar=50;";
ich versucht habe nativen PHP-Funktionen wie parse_url zu verwenden, filter_var aber keiner von ihnen funktioniert wie erwartet.
UPDATE 1
Um es klar zu machen, versuche ich, möglichst URI von Skript Inhalt zu trennen, die als DOM-Element eingefügt werden würden. Alle URLs würden als SRC-Attribut gehen und Ruhe als Inhalt, Beispiel:
<script type="text/javascript" src="{$string}"></script>
<script type="text/javascript">{$string}</script>
UPDATE 2 von möglichem Inhalt zu analysieren ich zu dem Schluss gekommen, dass String, String weiße Leerzeichen oder Semikolon bedeuten, die nicht URI sein könnte, Ich vermute, dass dieses Muster mein Problem lösen könnte:
preg_match('/[\s]|[;]/', $string);
würde es alle möglichen Javascript/CSS-Code abdecken?
Definieren Sie "URL". Werden sie immer das Protokollpräfix haben? Wenn nicht, was würde eine URL von einer zufälligen Zeichenfolge unterscheiden - die "www."? Möchten Sie nur für http oder ftp, scp, https ... testen? Was ist mit Benutzername @ Passwort: Hostname Präfixe?Was ist mit den relativen URLs '/ folder/file.php'? –
Sie wissen, dass beide Fälle technisch gültige URLs sind, oder? Der Unterschied besteht darin, dass der erste wahrscheinlich zu einer gültigen Ressource führt, während der zweite eine Überprüfung/Überprüfung des Domänennamens zur Folge hat. – cdhowie
Danke Pekka, ich habe das Szenario ohne Protokoll oder Domain vergessen. – Nazariy