Forenindex » Programmierung/Entwicklung » PHP und MySQL » erg_replace

erg_replace

Baschi3
Beiträge gesamt: 294

30. Mär 2003, 21:06
Bewertung:

gelesen: 883

Beitrag als Lesezeichen
Hallo

Ich möchte alle Links von einem in Formular einegebenen Text in anclickbare Links umwandeln mit folgendem Code:

$footer = ereg_replace("(http://|ftp://)([a-zA-Z1-9\.\-\/]*)","<a class=\"normal\" href=\"\\1\\2\">\\2</a>",$str);

klappt in der Regel, aber bei http://www.sp-ps.ch wird nur www.sp zwischen den a-Tag gesetzt.
Kann mir jemand sagen warum?

Danke

erg_replace

Miro Dietiker
Beiträge gesamt: 699

30. Mär 2003, 21:25
Bewertung:

gelesen: 883

Beitrag als Lesezeichen
Hi Baschi!

Ich habe keine Dokumentation welche 100% auf die Unterschiede zwischen
ereg und preg eingeht. Da preg mehr verbreitet ist und auch schneller
rate ich auch eher diese zu nutzen. Leider gibt es aber in der Muster-
definierung einige Unterschiede, so dass man genau wissen muss, wie
man diese Muster wirklich definiert / übernimmt.

Konkret dein Problem:
ereg macht hier etwas unvorhergesehenes (für mich) denn das "\-" im
ausdruck wird nicht richtig erkannt als Pattern. Interessant hierbei
ist, dass das Problem erledigt ist, wenn man \- ans Ende der Muster-
definition nimme. Ich empfehle es entsprechend zu ändern und es ist
OK ;)

also ändern zu:
$footer = ereg_replace("(http://|ftp://)([a-zA-Z1-9\.\/\-]*)","<a class=\"normal\" href=\"\\1\\2\">\\2</a>",$str);

*smile* interessant... denn nach meiner definition müsste auch Deine
Variante wirklich ok sein :) aber die \- scheinen am Ende von
Charakter-klassen stehen zu müssen .)

Hope It works... Miro Dietiker

erg_replace

Baschi3
Beiträge gesamt: 294

30. Mär 2003, 21:41
Bewertung:

gelesen: 883

Beitrag als Lesezeichen
Hi Miro,

super!!! vielen Dank.

Aber dass die Reihenfolge eine Rolle spielt?
Sachen gibts!

Franz