regex zur Umwandlung URL in Link
Fritz
- php
Hallo,
es gab hier mal einen thread (vermutlich mehrere *g*) zu diesem Thema. Finde den aber trotz intensiver Suche nicht mehr.
Dabei ging es um möglichst sichere Umwandlung auch von URLs mit angehängten Parametern und URLs mit Sonderzeichen.
Beispiel:
http://en.wikipedia.org/wiki/Cupertino,_California#Economy
"mein" regex hat Probleme mit dem Komma in obiger URL
aber auch mit dem % in
http://www.example.com/test/test.php?room=123%23
$link = str_replace("http://www.","www.",$link);
$link = str_replace("www.","http://www.",$link);
$link = preg_replace("/([\w]+://[\w-?&;#~=./@]+[\w/])/i","<a href="$1" >$1</a>", $link);
Ein weiteres Problem mit dieser Art der Umwandlung:
Lange Links werden nicht umgebrochen, und können u.U. einen häßlichen horizontalen Scrollbalken erzeugen.
Wie kann man ab einer bestimmten Länge den Linktext abkürzen?
Und nein, die obige regex ist nicht SELF, sondern nur "SELF_ergooglet". Meine regex Kenntnisse reichen bei weitem für so etwas nicht aus.
Vielleicht kann mir ja jemand weiterhelfen. Danke jedenfalls im voraus dafür.
Gruß Fritz
echo $begrüßung;
Dabei ging es um möglichst sichere Umwandlung auch von URLs mit angehängten Parametern und URLs mit Sonderzeichen.
Beispiel:
http://en.wikipedia.org/wiki/Cupertino,_California#Economy
Ein Beispiel, wie eine URL RFC2396-konform geprüft werden kann ist in PEARs Validate-Paket enthalten. Die Prüfung in der Methode Validate::uri() kann sicher auch zur Erkennung verwendet werden. Zu entfernen wären auf alle Fälle Anfang- und Ende-Kennung (^ und $), da die URL bei dir ja irgendwo im Text vorkommen soll. Es sieht mir auch so aus, als ob das Schema optional wäre. Das solltest du zum Pflichtbestandteil machen, sonst findest du vermutlich viel zu viel.
Wie kann man ab einer bestimmten Länge den Linktext abkürzen?
Indem man mittels geeigneter Stringfunktionen die Länge ermittelt und beim Überschreiten eines gewünschten Wertes mittels weiterer Stringfunktionen eine gewünschte Manipulation vornimmt.
echo "$verabschiedung $name";
Hallo,
Wie kann man ab einer bestimmten Länge den Linktext abkürzen?
Indem man mittels geeigneter Stringfunktionen die Länge ermittelt und beim Überschreiten eines gewünschten Wertes mittels weiterer Stringfunktionen eine gewünschte Manipulation vornimmt.
Danke. Und genau da hakt's bei mir:
Sobald ich versuche, die Rückreferenz $1 in der regex zu manipulieren, erhalte ich immer anstelle der Rückreferenz den String "$1".
Beispiel:
$link = preg_replace('/([\w]+://[\w-?&;#~=./@]+[\w/])/i',''<a href="'.urlencode("$1").'">$1</a>'', $link);
Gruß Fritz
Hallo,
Beispiel:
$link = preg_replace('/([\w]+://[\w-?&;#~=./@]+[\w/])/i','<a href="'.urlencode("$1").'" rel="nofollow">$1</a>', $link);
Gruß Fritz
Hey,
'[...]$1[...]'
dies ist der eigentliche String $1. Wenn du möchtest, dass der Wert von $1 interpoliert wird, musst du etwas anderes machen. Alternativ kannst du die Variable auch mit dem Operator . an den Strings verketten.
Hallo,
'[...]$1[...]'
dies ist der eigentliche String $1. Wenn du möchtest, dass der Wert von $1 interpoliert wird, musst du etwas anderes machen.
interpoliert?
und _was_ bitte muß ich machen?
Gruß Fritz