Link automatisch Plattern

zmedia

Angesehenes Mitglied
Hi zusammen

Ich versuche mich zur Zeit mit dem Plattern von Textelementen.

Grund:
Ich will einen Text der eingegeben wird, aus einem http://www.link.net einen funktionierenden Linkklick erstellen?

Lösungsansatz:
CODE $text = preg_replace("/^(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|ch|de|net|at|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$/i","<a target=\"_blank\" href=\"http://\0\">\0</a>",$text);



Leider wird mir hier aber der komplette Text geschluckt!

Hat jemand damit Erfahrung, oder allenfalls gleich ein funktionierendes Scriptschnipsel auf lager?

Danke René
 
QUOTE (z-web @ Do 21.7.2005, 15:44)[...]
Lösungsansatz:

CODE $text = preg_replace("/(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|ch|de|net|at|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*/i","<a target=\"_blank\" href=\"http://\0\">\0</a>",$text);



[...]


Hallo.

Nur teilweise IDNA tauglich (ä,ö,ü,ß) und ist auch noch nicht all zu genau. Ich denke es ist aber besser ab als im vorherigen Beispiel, außerdem habe ich die Fehler herausgenommmen, welche mir in Deinen Lösungsansatz entgegen gesprungen sind. Musst mal schauen ob mein Code so läuft, immerhin habe ich den nicht weiter getestet. Sonst melde Dich einfach noch Mal wieder.

CODE $text = preg_replace('/^(((ftp|http)s?\:\/\/)?([a-z0-9\%\-\_]+(\:[a-z0-9\%\-\_]+)?\@)?([a-z0-9\-\_\ä\ö\ü\ß]{2,61}\.)*([a-z0-9\-\_\ä\ö\ü\ß]{2,63})(\.[a-z]{2,6})(\:[0-9]{1,5})?(\/[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+)*)$/i', '<a href="\1" target="_blank">\1</a>', $text);


Und nochmal den Plattern nur zur besseren Übersicht:

CODE /(
  ((ftp|http)s?\:\/\/)?
  ([a-z0-9\%\-\_]+(\:[a-z0-9\%\-\_]+)?\@)?
  ([a-z0-9\-\_\ä\ö\ü\ß]{2,59}\.)*
  ([a-z0-9\-\_\ä\ö\ü\ß]{2,61})
  (\.[a-z]{2,6})
  (\:[0-9]{1,5})?
  (\/[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+)*
)/i



MfG Sascha Ahlers
 
Hi Sascha

Erstmal herzlichen Dank!

Leider habe ich auch mit Deiner Variante keinen Erfolg!

Zudem ist mir aufgefallen, dass Du das www entfernt hast; ist es denn nicht so, dass nur http:// umgewandelt würden.

Gruss René
 
QUOTE (z-web @ Do 21.7.2005, 18:38)Hi Sascha

Erstmal herzlichen Dank!

Leider habe ich auch mit Deiner Variante keinen Erfolg!

Zudem ist mir aufgefallen, dass Du das www entfernt hast; ist es denn nicht so, dass nur http:// umgewandelt würden.

Gruss René

Nun, ich habe das einfache URL-Shema genommen, da ist "www" halt durch dem dritten Teil des Plattern enthalten:

CODE ([a-z0-9\-\_\ä\ö\ü\ß]{2,59}\.)*


Ich habe nun auch den Fehler gefunden und diesen verbesser, werde das ganze noch etwas überarbeiten, wenn halt http oder ftp fehlt, werde aber wohl einfach zwei preg_replace drüber laufen lassen. ;-)


MfG Sascha Ahlers

PS: Der Fehler lag letzendlich an ^ und $, immerhin durchsuche ich einen kompletten Text und gehe nicht von einen expliziten Anfang und Ende aus.
 
Ja korrekt ohne Anfang und Ende funktioniert es.

Habe nun noch kleine Probleme mit dem Abfüllen des Textes in meine Strukturen, aber das Plottern geigt! Herzlichen Dank erstmal.

FOLGEPROBLEM:

Wenn ich nun einen Link nur mit www angebe, wird auch das href ohne http:// geschrieben, was probleme mit dem Link ergibt!
 
Hallo,

QUOTE (z-web)[...] Leider wird jedoch im normalen Text ein value= vorangestellt, was zu Folge hat dass mein Quellcode zerrissen wird und so der komplette String mit Inhalt nocheinmal separat ausgegeben wird.

Das musst Du mir nu etwas genauer erklären, ich kann Dir dabei nicht ganz folgen. Welches Quellcode wird zerrissen und welcher Inhalt wird zwei Mal ausgegeben?
wacko.gif




Trotzdem mal eben kurz noch die verbesserte Fassung, so sollte es eigentlich die meisten URLs richtig erkennen. Bei einigen Test URL hat es bisher schon Funktioniert.


CODE $text = preg_replace('/(\s)(www\.([a-z0-9\-\_\ä\ö\ü\ß]{2,61}\.)*([a-z0-9\-\_\ä\ö\ü\ß]{2,63})(\.[a-z]{2,6})(\:[0-9]{1,5})?(\/[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+)*)/i', '\1<a href="http://\2" target="_blank">\2</a>', $text);

$text = preg_replace('/(\s)(((ftp|http)s?\:\/\/)([a-z0-9\%\-\_]+(\:[a-z0-9\%\-\_]+)?\@)?([a-z0-9\-\_\ä\ö\ü\ß]{2,61}\.)*([a-z0-9\-\_\ä\ö\ü\ß]{2,63})(\.[a-z]{2,6})(\:[0-9]{1,5})?(\/[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+)*)/i', '\1<a href="\2" target="_blank">\2</a>', $text);


Test-String:

CODE $text = 'Dies ist ein http://test:test@kleine.sascha-ahlers.de/~luke/test/index.php?get=test&est=fest001%0E,33e Lala www.kleine.domain.de http://www.test.de lalal kleine.test.de/~luke teasasdasdasd subdomain.test.de';




MfG Sascha Ahlers
 
Spitze!! Funktioniert einwandfrei, herzlichen Dank
biggrin.gif



QUOTE (Sascha Ahlers @ Do 21.7.2005, 21:11)Hallo,

QUOTE (z-web)[...] Leider wird jedoch im normalen Text ein value= vorangestellt, was zu Folge hat dass mein Quellcode zerrissen wird und so der komplette String mit Inhalt nocheinmal separat ausgegeben wird.

Das musst Du mir nu etwas genauer erklären, ich kann Dir dabei nicht ganz folgen. Welches Quellcode wird zerrissen und welcher Inhalt wird zwei Mal ausgegeben?
wacko.gif





Das habe ich bereits lokalisiert und aus meinem Beitrag von oben entfernt.
Ich möchte den Text zur weitergabe in ein input stecken (value). Das scheint Probleme zu bereiten! Logischerweise gefallen die " im input nicht das erste wir im CODE übernommen!
Habe das gefühl, dass ich zur Zeit auf dem Schlauch stehe! Komm noch dahinter!
rolleyes.gif
 
QUOTE (z-web)Wenn ich nun einen Link nur mit www angebe, wird auch das href ohne http:// geschrieben, was probleme mit dem Link ergibt!

Nimm meine zweite Version, die funktioniert vernünftig, das ist mir später auch aufgefallen ;-)



QUOTE (z-web @ Do 21.7.2005, 20:20)
Ich möchte den Text zur weitergabe in ein input stecken (value). Das scheint Probleme zu bereiten!
[...]

Dazu musst Du den String nur noch einmal durch htmlentities() [1] schicken und dann sollte es eigentlich funktionieren. Du scheinst wirklich auf'm Schlauch zu stehen
happy.gif




MfG Sascha Ahlers

[1] PHP-Funktion: htmlentities
 
QUOTE (Sascha Ahlers @ Do 21.7.2005, 21:29)
QUOTE (z-web)Wenn ich nun einen Link nur mit www angebe, wird auch das href ohne http:// geschrieben, was probleme mit dem Link ergibt!

Nimm meine zweite Version, die funktioniert vernünftig, das ist mir später auch aufgefallen ;-)



QUOTE (z-web @ Do 21.7.2005, 20:20)
Ich möchte den Text zur weitergabe in ein input stecken (value). Das scheint Probleme zu bereiten!
[...]

Dazu musst Du den String nur noch einmal durch htmlentities() [1] schicken und dann sollte es eigentlich funktionieren. Du scheinst wirklich auf'm Schlauch zu stehen
happy.gif




MfG Sascha Ahlers

[1] PHP-Funktion: htmlentities


Ja, danke das mit em www habe ich bereits übernommen, da hatten wir uns beinahe überschnitten mit den Beiträgen.


Logisch htmlentities() ich sagte ja ich steh im Moment auf dem Schlauch !

Herzliches Dankeschön
 
Zurück
Oben