str_replace() ?

iLu_is_a_loser

Erfahrenes Mitglied
Hallo kann mir jemand ein Beispiel geben mit str_replace()

zb. in einer Textarea, der name der textarea ist Kommentar,steht :zunge: und jetzt soll :zunge: durch ein smilie erszt werden das im Unterorder smilies ist und die Datei heisst zunge.gif.....


danke im vorraus
mfg
iLu
 
Eine simple Lösung wäre Folgendes:
PHP:
<?php
	[…]
	$subject = preg_replace('/:([^:][a-z]+):/', '<img src="ornder/\\1.gif" alt="\\1" />', $subject);
	[…]
?>
 
Zuletzt bearbeitet:
Gumbo, er wollte doch Infos zu [phpf]str_replace[/phpf], und nicht zu [phpf]preg_replace[/phpf]. Mit ersterem geht das so:
PHP:
$text = str_replace(':zunge:', '<img src="smilies/zunge.gif">', $text);
 
Na damit er auch versteht, was da steht. ;) Jeder fängt mal klein an, und deinen Ansatz in allen Ehren (jeder würde es vermutlich so machen, auch iLu_is_a_loser früher oder später, wenn er die Vorteile von RegEx kennenlernt), aber ich glaube kaum, dass er irgendwas von dem verstanden hat, was du da hingeschrieben hast, wohingegen die Syntax von [phpf]str_replace[/phpf] schön einfach und intuitiv ist. :)
 
Habe ein Problem festgestellt.....

wenn ich jetzt ein Smiley anklicke entsteht ein Code zb ":D" in der textarea und die werden wiefolgt ausgeführt
PHP:
$kommentar = str_replace(':D ','<img src="gifs/_biggrin.gif">', $kommentar);
$kommentar = str_replace('Oo ','<img src="gifs/_blink.gif">', $kommentar);
$kommentar = str_replace('8) ','<img src="gifs/_cool.gif">', $kommentar);
$kommentar = str_replace(':dry: ','<img src="gifs/_dry.gif">', $kommentar);
$kommentar = str_replace(':X' ,'<img src="gifs/_green.gif">', $kommentar);
$kommentar = str_replace('^^' ,'<img src="gifs/_happy.gif">', $kommentar);
$kommentar = str_replace(':huh: ','<img src="gifs/_huh.gif">', $kommentar);
$kommentar = str_replace(':haha: ','<img src="gifs/_laugh.gif">', $kommentar);
$kommentar = str_replace(':mad: ','<img src="gifs/_mad.gif">', $kommentar);
$kommentar = str_replace(':mellow: ','<img src="gifs/_mellow.gif">', $kommentar);
$kommentar = str_replace(':o ','<img src="gifs/_ohmy.gif">', $kommentar);
$kommentar = str_replace(':( ','<img src="gifs/_sad.gif">', $kommentar);
$kommentar = str_replace(':zZz: ','<img src="gifs/_sleep.gif">', $kommentar);
$kommentar = str_replace(':) ','<img src="gifs/_smile.gif">', $kommentar);
$kommentar = str_replace(':p ','<img src="gifs/_tongue.gif">', $kommentar);
$kommentar = str_replace(':P ','<img src="gifs/_tongue.gif">', $kommentar);
$kommentar = str_replace(':unsure: ','<img src="gifs/_unsure.gif">', $kommentar);
$kommentar = str_replace(':wacko: ','<img src="gifs/_wacko.gif">', $kommentar);
$kommentar = str_replace(':wink: ','<img src="gifs/_wink.gif">', $kommentar);
$kommentar = str_replace(':love: ','<img src="gifs/_wub.gif">', $kommentar);

aber der letzte smiley wird nicht zu einem .gif Bild zb.

ich mache 3 smileys werden die ersten beiden zu einem Bild doch der 3. bleibt ":D"
 
Das liegt vielleicht daran, dass du bei einigen Smilies ein Leerzeichen am Ende gesetzt hast. Wenn das nicht da ist (z.B. am Ende des Strings), dann wird auch nichts ersetzt.

Noch ein kleiner Tipp: [phpf]str_replace[/phpf] kann auch mit Arrays umgehen. Falls du nicht weißt, was das ist, empfehle ich dir folgendes Tutorial: http://tut.php-q.net/array.html

Angewandt auf deine Problemstellung könnte das dann so aussehen:
PHP:
<?php

$search = array(
	':-)',
	'Oo',
	'8)',
	':dry:'
	/* usw. */);

$replace = array(
	'<img src="gifs/_biggrin.gif">',
	'<img src="gifs/_blink.gif">',
	'<img src="gifs/_cool.gif">',
	'<img src="gifs/_dry.gif">'
	/* usw. */);

// Alle Ersetzungen in einem Rutsch:
$kommentar = str_replace($search, $replace, $kommentar);

?>
 
Zurück