Willkommen in der Webstatt
User-1 am 05.03.06 00: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(':-)', '<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!
xyz-234

netcup.de Warum gibt es hier Werbung?
User-2 am 05.03.06 00:19

Wie wäre es mit einem Array:

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

User-3 am 05.03.06 00:37

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

User-2 am 05.03.06 00:46

Darfst du nicht.

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

User-4 am 05.03.06 00:52

er wolte doch nur helfen...?!

User-3 am 05.03.06 00:52

Ok, dann habe ich nix gesagt. ^^

User-5 am 05.03.06 09: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.

xyz-141el

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

User-1 am 06.03.06 00:03

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

User-2 am 06.03.06 01:17

Halt, es war deine Idee mit ereg_replace!

User-6 am 06.03.06 09: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);

User-7 am 06.03.06 13:47

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

User-8 am 06.03.06 14:22

Einfach so...

<?
$text = 'Hallo ;) :D';

$smilies = array(
':)' => 'smile',
':D' => 'laugh',
';)' => 'wink');

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

echo $text;
?>

User-6 am 06.03.06 15:22

Milahu, ich hab das doch einfach so kopiert. ;-)

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. ;)

User-5 am 06.03.06 15: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.

User-6 am 06.03.06 16:07

xyz-48ke.
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. :D

User-5 am 06.03.06 16: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

User-7 am 06.03.06 16:12

Quote
Original von xyz-141el
Regex mit PHP ist auch ein Krampf.

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

User-5 am 06.03.06 16:26

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

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt