Webstatt.org - Community seit 2006 - 2012 (2024?)

ereg_replace - mehrere zeichen ersetzen

user-344
04.03.2006 23:10

hallo zusammen,

ich hätte eine frage...wenn ich einen text habe.. und möchte diesen mit smilies bestücken mache ich ja so:

$msg= ereg_replace('lächeln', '<img src=images/smilies/smilies1.gif></img>' , $text);

aber wie kann ich den ganzen text mit 10 smiles bestücken.. also 10 mal ereg_replace ist etwas unschön und aufwändig...

gibt es da einen eleganteren weg?
danke!
web4

Avatar user-125
04.03.2006 23:19

Wie wäre es mit einem Array:

 $smilieArray = array(
'Fettes Grinsen' => 'smilie.gif',
'traurig' => 'smilie2.gif',
);
foreach ( $smilieArray AS $icon => $file )
{
$msg = ereg_replace($icon, '<img src=images/smilies/'.$file.'/>' , $text);
}

Liebe user-125y aka user-125 aka dionysos
Avatar user-317
04.03.2006 23:37

Wenn ich mich jetzt noch beschweren dürfte, das hier ereg_ statt preg_ benutzt wird.... Fettes Grinsen

Avatar user-125
04.03.2006 23:46

Darfst du nicht.

Die Frage ist ja nicht gewesen, mit welcher Funktion und wie wandle ich Textzeichen in Smilies um.

Liebe user-125y aka user-125 aka dionysos
Avatar user-162
04.03.2006 23:52

er wolte doch nur helfen...?!

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
Avatar user-317
04.03.2006 23:52

Ok, dann habe ich nix gesagt. ^^

Avatar user-253
05.03.2006 08:28

Du könntest auch einfach str_replace benutzen. Alle regulären Ausdrücke machen erst bei Suchmustern Sinn, nicht aber bei statischen Text.
Insbesondere bei der Regex Unterstützung von PHP sollte man sie nur dort benutzen wo es wirklich nötig ist.

Des Weiteren: Wenn du den Such- und Ersetzteil jeweils in einen Array speicherst, kannst du str_replace als Argumente auch diese Arrays übergeben und sparst dir so die foreach Schleife.

Michael

P.S.: Natürlich sind die preg_* Funktionen immer den ereg_* Funktionen vorzuziehen

user-344
05.03.2006 23:03

so ich hab mal eure inputs durch gearbeitet! ich habe mich schlussendlich für michael's str_replace entschieden... wobei auch user-125s variante mit ereg_replace funktioniert... jedoch kann man mit str_replace ein paar zeilen code sparen...
vielen dank für eure hilfe!
gruss
benjamin

Avatar user-125
06.03.2006 00:17

Halt, es war deine Idee mit ereg_replace!

Liebe user-125y aka user-125 aka dionysos
Avatar user-168
06.03.2006 08:21

Wenn ich {...} ersetzen will (statt der Punkte ein wilkürlicher Text), geht das ebenso? Nur { und } davor setzen, oder erkennt er die als irgend nen Modifier an?


$msg = ereg_replace('{text}', '' , $text);

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-255
06.03.2006 12:47

Bitte gewöhne dir ereg_* ab, das Zeug ist veraltet!
<?php
$msg = preg_replace( '/{.*?}/s', '', $msg );
?>

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-182
06.03.2006 13:22

Einfach so...

<?
$text = 'Hallo zwinkern Fettes Grinsen';

$smilies = array(
'lächeln' => 'smile',
'Fettes Grinsen' => 'laugh',
'zwinkern' => 'wink'zwinkern;

foreach($smilies as $icon => $filename) $text = str_replace($icon, '<img src="/images/smilies/'.$filename.'.gif" alt="'.$icon.'" />', $text);

echo $text;
?>

Seid ihr auch schon wix'r? xD
Avatar user-168
06.03.2006 14:22

Milahu, ich hab das doch einfach so kopiert. zwinkern

Wieso denn /s und woran erkennt der, dass das nen Modifier ist? *Regex lernen will*


Irgendwie snd die Tutorials, die ich bisher kenne alle sehr kompliziert oder nciht direkt für PHP, was mich dann demotiviert. zwinkern

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-253
06.03.2006 14:35

Regex mit PHP ist auch ein Krampf.

Ein Regex ist immer von zwei gleichen Zeichen umschlossen, die im Regex (unescaped nciht vorkommen dürfen. Alle Buchstaben nach dem zweiten schließenden Begrenzer werden als Modifier interpretiert.

Zum lernen kann ich dir das Buch "Reguläre Ausdrücke" empfehlen.

Avatar user-168
06.03.2006 15:07

Danke.
Werd ich mir mal anschauen. Hab zwar schon wieder auf deinen Post 3 und mehr Fragen, aber ich will nicht das Thema komplett untergraben. Außerdem wäre es viel Arbeit, wenn man mir versucht Regex beizubringen. Fettes Grinsen

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-253
06.03.2006 15:09

Frag ruhig dafür ist das Forum da.
Alternativ kannst du ja einen neuen Thread für dieses Thema aufmachen -dort wäre dann der richtige Platz all deine Regexfragen zu diskutieren

Avatar user-255
06.03.2006 15:12

Original von user-251el
Regex mit PHP ist auch ein Krampf.

Hmm? Nur weil die Syntax nicht so schön wie in Perl ist...

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-253
06.03.2006 15:26

Auch aber ich meinte eher die Ausführungszeit und die vorhandenen (Regex-)Operatoren