Hi Leute! Mein Problem ist zugegeben kein neues und ich hab auch mit Hilfe der Suchfunktion schon einiges zum Thema gefunden, jedoch hilft mir leider keines der 15000 results weiter!
Ich habe einen String $action der einen Teil eines Logfile-Auszuges dastellt.
$action kann auch URLs enthalten, die ich mit folgender Funktion filtere (replace_url($action)):
Nun werden ca. 90% aller URLs auch in Links umgewandelt, jedoch eben nicht ALLE!
Folgende URLs werden einfach nicht gewandelt:
BSP1: http://bobtheveg.dyndns.org/SRO/Char...?profile=25777
BSP2: http://www.youtube.com/watch?v=jykmfSs8jZA
BSP3: http://www.youtube.com/watch?v=oSbE9...elated&search=
ich hab keinen Schimmer warum manche URLs "durchrutschen" und hoffe irgendjmd von euch kann mir sagen, was ich nicht beabsichtigt habe oder falsch mache.
Danke.
Ich habe einen String $action der einen Teil eines Logfile-Auszuges dastellt.
$action kann auch URLs enthalten, die ich mit folgender Funktion filtere (replace_url($action)):
PHP-Code:
function replace_url($string) {
//Alle Toplevel Domainendungen
$tld_endings = "com|net|org|biz|info|edu|eu|aero|coop|museum|al|as|vi|ai|ag|ar|am|";
$tld_endings .= "aw|ac|az|et|au|bh|by|be|bz|bj|ba|br|vg|io|bg|cl|cn|cc|dk|de|dj|ec|";
$tld_endings .= "ee|fo|fi|fr|tf|li|gm|gi|gr|gl|uk|gg|gy|hm|hk|in|id|ie|im|il|it|jp|";
$tld_endings .= "je|ca|kz|ke|ki|cg|hr|lv|lt|lu|mw|my|mt|mx|fm|md|mc|mn|ms|nz|ni|nl|";
$tld_endings .= "an|nu|nf|no|at|pk|pa|pe|ph|pn|pl|pt|pr|ro|ru|su|ch|yu|sc|sg|sk|si|";
$tld_endings .= "es|kn|sh|sf|za|gs|kr|sr|tw|tz|th|tk|to|tt|cz|tr|tm|tc|tv|ua|hu|uy|";
$tld_endings .= "us|uz|vu|ve|ae|vn|ws|cy";
//alle erlaubten Dateiendungen
$file_endings = "php|htm|html|xml|xhtml|jpg|jpeg|gif|png|pdf|asp|js|swf";
//alle Umlaute
$umlaute = "àáâãäåæçèéêëìíîïðñòóôöøùúûüýþÿ";
//Die Ausdrücke um [url]www....[/url] oder Strings
//mit einem @ usw in Links ersetzt
$patterns["mail"] = "#(^|[^\"=\./a-z0-9]{1})([_a-z0-9-\." . $umlaute . "]+)".
"(\@)([a-z0-9_\-\." . $umlaute . "]+)(\.)(" . $tld_endings .
")(/)*([\s\r\t\n<>]|$)#msi";
$replaces["mail"] = "\\1<a target=\"new\" href=\"mailto:\\2\\3\\4\\5\\6\\7\">".
"\\2\\3\\4\\5\\6\\7</a>\\8";
$patterns["url"] = "#(^|[^\"=\./a-z0-9]{1})([url ]http://[/ url]|[u rl]ftp://[/u rl]|
[u rl]news://[/u rl]|[u rl]https://[/u rl]|ftps://)".
"([a-z0-9_\-\." . $umlaute . "]+)(\.)(" . $tld_endings . ")".
"(/([a-z0-9_\-/" . $umlaute . "]+)*)*([a-z0-9\._-]+\.(" .
$file_endings . ")([^\s\n\r\t\(\)\[\]\{\}<>]+)*)*([\s\r\t\n<>]|$)#msi";
$replaces["url"] = "\\1<a target=\"new\" href=\"\\2\\3\\4\\5\\6\\8\">".
"\\2\\3\\4\\5\\6\\8</a>\\11";
$patterns["ftp"] = "#(^|[^\"=\./a-z0-9]{1})(ftp\.)([a-z0-9_\-\." . $umlaute .
"]+)(\.)(" . $tld_endings . ")(/([a-z0-9_\-/" . $umlaute .
"]+)*)*([a-z0-9\._-]+\.(" . $file_endings .
")([^\s\n\r\t\(\)\[\]\{\}<>]+)*)*([\s\r\t\n<>]|$)#msi";
$replaces["ftp"] ="\\1<a target=\"new\" href=\"ftp://\\2\\3\\4\\5\\6\\8\">".
"\\2\\3\\4\\5\\6\\8</a>\\11";
$patterns["www"] = "#(^|[^\"=\./a-z0-9]{1})(www\.)([a-z0-9_\-\." . $umlaute .
"]+)(\.)(" . $tld_endings . ")(/([a-z0-9_\-/" . $umlaute .
"]+)*)*([a-z0-9\._-]+\.(" . $file_endings .
")([^\s\n\r\t\(\)\[\]\{\}<>]+)*)*([\s\r\t\n<>]|$)#msi";
$replaces["www"] = "\\1<a target=\"new\" href=\"http://\\2\\3\\4\\5\\6\\8\">".
"\\2\\3\\4\\5\\6\\8</a>\\11";
//Den String ersetzen...
$string = preg_replace($patterns, $replaces, $string);
//...und zurückgeben.
return $string;
}
Folgende URLs werden einfach nicht gewandelt:
BSP1: http://bobtheveg.dyndns.org/SRO/Char...?profile=25777
BSP2: http://www.youtube.com/watch?v=jykmfSs8jZA
BSP3: http://www.youtube.com/watch?v=oSbE9...elated&search=
ich hab keinen Schimmer warum manche URLs "durchrutschen" und hoffe irgendjmd von euch kann mir sagen, was ich nicht beabsichtigt habe oder falsch mache.
Danke.
Kommentar