You are not logged in.


1

Friday, June 24th 2005, 11:47am

Links per RegEx umwandeln

Hey,
wieder ne Frage über RegEx.
Und zwar mag ich Adressen automatisch mit Links ersetzen.
Hier mein beispiel:

PHP Source code

1
2
3
4
5
<?php
    $text "Dies ist ein Link, der ohne irgendwelche Tags umgewandelt werden soll: www.example.com test";
    $text preg_replace("/(((https?\:\/\/)|(www\.))[^\s]+)/""<a href='\$1'>\$1</a>"$text);
    echo $text;
?>

Das funktioniert schon prächtig. Und wenn der String nach example.com am Ende ist, geht es auch.
Aber wenn ich sowas wie "Url ist www.example.com." also nen Punkt nach der Url hab, kommt der Punkt mit in den Link rein, wie bekomm ich den raus?

This post has been edited 4 times, last edit by "Funny" (Jul 19th 2011, 10:07pm)


Rolf

Moderatorenleitung

Posts: 1,073

Location: Tessin (Schweiz)

Occupation: *

  • Send private message

2

Friday, June 24th 2005, 12:57pm

Hallo

versuch mal:

Source code

1
$text = preg_replace("/(((https?\:\/\/)|(www\.))[^\s]+[^\.\s]+)/", "<a href='\$1'>\$1</a>", $text);


Gruss Rolf
Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab. Weisheit der Dakota Indianer

3

Monday, December 19th 2005, 4:44pm

Als du den Post das erste mal gepostet hast, hatte ich mir vorgenommen, es später auszuprobieren und dann vergessen.
Nun, wo ich es per Google Alert per E-Mail nochmal bekommen habe, hab ich es ausprobiert und es funktioniert perfekt.
Vielen Dank!

This post has been edited 1 times, last edit by "Funny" (Dec 19th 2005, 4:45pm)


ProfessorWeb

Unregistered

4

Friday, March 18th 2011, 2:38am

Hallo zusammen,

das Thema ist zwar schon steinalt, aber für die armen Leute die von Google kommen wäre die folgende Korrektur vielleicht noch interessant.

Der bisherige Code oben macht, wenn er das hier im Text findet: "Geh mal auf www.blahblah.de!!" einen Link der im href so aussieht: href="www.blahblah.de"... ;(

Das ist natürlich falsch, weil ein Link immer erst mit dem Protokoll beginnen muss. Sprich: http:// oder https://. Damit das bei dem Replace berücksichtigt wird, kann man den regulären Ausdruck so anpassen:

PHP Source code

1
2
$text preg_replace(    '/(((http(s)?\:\/\/)|(www\.))([^\s]+[^\.\s]+))/',    '<a href="http$4://$5$6">$1</a>',
    $text);


8)


Schöne Grüße
Armin
www.professorweb.de

Social bookmarks

Rate this thread