![]() |
[PHP] preg_replace ersetzt "falsch"
hi leute,
ich kenne mich leider nur ganz schlecht mit regulären ausdrücken aus. ich benutze folgenden code, um die zeichen ; ) in den smiley ;) umzuwandeln:
Code:
soweit so gut. funktioniert auch. nur, wenn er zu folgenden zeichen kommt:
$text = preg_replace("/;\)/", "<img src=\"images/smilies/wink.png\" alt=\"Zwinkern\" title=\"Zwinkern\"/>", $text);
") ersetzt er die schließende klammer mit dem img.tag. das " für dem bildchen bleibt bestehen. (und ja, es passiert nur, wenn er die folge ") findet. ohne dem " ist alles ok. und ohne der ) ebenfalls... nur nicht, wenn beide zeichen hintereinander auftauchen :( ) ich weiß nicht, wieso er das falsche auch damit ersetzt... könnt ihr mir da helfen? :) danke schonmal, aenogym |
Re: [PHP] preg_replace ersetzt "falsch"
Moin Aeno,
ich kenne mich zwar auch nicht so ganz mit regulaeren Ausdruecken aus, aber vielleicht hilft dir ja ein Blick ins phpBB. Dort wird ein Smiley so ersetzt:
Code:
Du kannst $orig und $repl natuerlich auch als array deklarieren, und alles in einem Schritt ersetzen lassen. Zur Regexp: ich hab keine Ahnung warum das so umstaendlich gemacht werden muss, aber es funktioniert :mrgreen:
$smiley_code = ';)';
$smiley_url = 'images/smilies/wink.png'; $smiley_emoticon = 'Zwinkern'; $orig = "/(?<=.\W|\W.|^\W)" . phpbb_preg_quote($smiley_code, "/") . "(?=.\W|\W.|\W$)/"; $repl = '[img]'. $smiley_url . '[/img]'; $text = preg_replace($orig, $repl, ' ' . $text . ' '); $text = substr($text, 1, -1); Vielleicht hilft es dir ja ein kleines bisschen weiter ;) Greetz alcaeu |
Re: [PHP] preg_replace ersetzt "falsch"
durch die phpbb bbcode datei hatte ich mich auch grad gekämpft. aber anscheinend habe ich eine andere version (nutze
![]() aber nun klappt es. vielen, vielen dank :) edit: natürlich benutze ich arrays. hab ja mehr als einen bbcode zu erstzen :mrgreen: aenogym |
Re: [PHP] preg_replace ersetzt "falsch"
Zitat:
Greetz alcaeus |
Re: [PHP] preg_replace ersetzt "falsch"
Wozu überhaupt irgendwelche preg_replaces? :gruebel:
Code:
air
$code = Array();
$repl = Array(); $code[] = ";)"; $repl[] = "<img src=\"zwinker.gif\" alt=\"Zwinkern\" title=\"Zwinkern\">"; $code[] = ":)"; $repl[] = "<img src=\"irgendwas.gif\" alt=\"bla\" title=\"bla\">"; // Eine Möglichkeit wäre auch mit Leerzeichen zu arbeiten: $code[] = " :P"; $repl[] = "..."; ... $text = str_replace($code, $repl, $deinText); |
Re: [PHP] preg_replace ersetzt "falsch"
Zitat:
Code:
und da hast du natürlich Semikolon+Klammer drin. Also sollten >), <) und &) ebenfalls Probleme machen (ggf. auch ä) ). Mache es so wie Airblader geschrieben hat, mit einfachem str_replace.
& q u o t ; )
|
Re: [PHP] preg_replace ersetzt "falsch"
Wenn man sich schlecht mit Regulären Ausdrücken auskennt, oder auch wenn man sich gut auskennt aber faul ist, gibt es Regex Buddy. Sehr sehr geiles Programm. 3-monatige Rückgabegarantie inklusive. Leider keine Trial verfügbar. Aber ich habe es und bin sehr zufrieden. Wurde übrigens scheinbar mit Delphi oder BCB geschrieben.
|
Re: [PHP] preg_replace ersetzt "falsch"
Zitat:
Und ausserdem: str_replace hilft hier auch nicht, warum auch? ;) ist ;), wird also von preg_replace als auch von str_replace ersetzt. Abhilfe schafft hier nur eins. Wenn die Zeichen als Entities daherkommen, einfach ein html_entity_decode() (vorsicht, gibts erst ab PHP 4.3.0) und anschliessend wieder ein htmlentities(), dann wirds auch so funktionieren. ;) Greetz alcaeus |
Re: [PHP] preg_replace ersetzt "falsch"
ich nehme die reg-exp's weil ich in einem rutsch die smilies und sonstige bbcodes ersetzen lasse. und gerade für bbcodes àlà [ url=http://www.google.de] ist regexp quasi unverzichtbar ;)
aenogym |
Re: [PHP] preg_replace ersetzt "falsch"
@alcaeus
Nunja, aber halt Manual lesen: Zitat:
air |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 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