![]() |
[PHP] ereg_replace
Hi Leute,
ich habe festgestellt, dass PHP die Funktion ereg_replace als deprecated markiert hat. Nun suche ich nach einer Alternative. Es geht darum, URL sowie www-Domains in den HTML-Code für Links umzuwandeln. Momentan verwende ich folgenden Code:
PHP-Quellcode:
Nun suche ich nach einer Alternative. preg_replace ist nicht deprecated, aber dann müsste ich mir ja neu Gedanken über den RegEx machen. Gibt es da noch eine andere Alternative die mir jetzt nicht ins Auge fällt?
$text = ereg_replace("(^| |\n)([[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/])","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $text);
$text = ereg_replace("(^| |\n)(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text); Gruß Felix |
AW: [PHP] ereg_replace
|
AW: [PHP] ereg_replace
Zukünftig einfach nach der Funktion auf php.net suchen
![]() Zitat:
Edit 2 @Dennis unter mir: Stimmt. Ich habe nur bis "Nun suche ich nach einer Alternative." gelesen (Valle vielleicht auch) und dachte, es sei klar, was Felix wissen will. *g* Aber @Felix: Das ist eine Standard-RegEx, die man leicht finden sollte. ;) |
AW: [PHP] ereg_replace
Er schreibt doch, das er eine alternative zu ereg_replace und preg_replace sucht:
Zitat:
|
AW: [PHP] ereg_replace
Stimmt, Tatsache. :shock:
Wieso schreibt er das? Die sind doch sehr kompatibel. Ich würde mal ganz spontan behaupten du müsstest nichts an deinem Code ändern. :gruebel: Liebe Grüße, Valle |
AW: [PHP] ereg_replace
Stimmt. Die einzige Änderung wäre vor dem RegEx ein "/" und danach nochmal. Du verwendest ja nicht eregi_replace also brauchst du nach dem abschließenden "/" auch keine Parameter.
Bernhard |
AW: [PHP] ereg_replace
Moin FAlter,
Zitat:
Hier nochmal dein Code:
PHP-Quellcode:
Ein Vorteil: die Preg-Funktionen kannst du in den multiline-Modus schalten (mit dem m-Modifier), so dass du nicht auf (^| |\n) als Delimiter sondern einfach auf (^|\b) matchen brauchst. Das ^ matcht im Multiline-Modus naehmlich auch einen Zeilenanfang, und das \b ist ein Word-Break.
$text = ereg_replace("(^| |\n)([[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/])","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $text);
$text = ereg_replace("(^| |\n)(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text); Ich kenn mich jetzt mit den ereg-Funktionen nicht so gut aus, mag dich aber daran erinnern dass du unbedingt bei einem " oder ' aufhoerst zu parsen, bzw. nur die laut RFC erlaubten Zeichen matcht. Sonst kann man relativ schnell eine URL wie z.B.
Code:
reinschreiben, und das geht mal so richtig ins Auge.
http://foo.bar/"onclick="document.href='bar.foo';return /**/false;
Greetz alcaeus |
AW: [PHP] ereg_replace
Hi,
ich hatte auf php.net geguckt. Aber wo die Beispiele beginnen habe ich nichts sinnvolles mehr erwartet und nicht noch weiter runter gescrollt. Warum kann das nicht oben dabei stehen? Falls wer Copy&Pasten will:
PHP-Quellcode:
[edit]
$text = preg_replace("#(^| |\n)([[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/])#","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $text);
$text = preg_replace("#(^| |\n)(www([.]?[a-zA-Z0-9_/\-~])*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text); Weiter oben im Code steht
PHP-Quellcode:
Demzufolge sollte ein " nichts schlimmes verursachen. Nur ' funktioniert im IE nicht (obwohl es in XML-Standard definiert ist und XHTML ist XML), da muss ich schnell nochmal suchen... gefunden: & #39 ;
$text = str_replace("<", "<", $text);
$text = str_replace(">", ">", $text); $text = str_replace('"', """, $text); $text = str_replace("'", "'", $text); [/edit] Gruß Felix |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz