Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish am 14.09.06 14:49

hai.
ich komme jetzt mal mit nem n00b problem zu euch. weil große ERDO es nicht lösen konnte belästige ich euch jetzt damit.

also ich will eine art schleife haben...

in der eingabe will ich verschiedene smiliecodes haben und ein bild

also zb so

':D', ':-D',':LOLOMGWTF:' => 'biggrin.gif'

und das ganze sollte dann irgentwie in dieses dingens eingebaut werden

$text = preg_replace("/\:D/si", "<img src=\"".$smilie_pfad."bigrin.gif\" alt=\"*biggrin*\"/>", $text);

netcup.de Warum gibt es hier Werbung?
Sven Sven am 14.09.06 15:01

Öh, was für ne Eingabe?

fish fish am 14.09.06 15:14

ich habe drei/vier/fünf smiie codes wie zb :- ) :- ( : - D und das bild. biggrin.gif. die sollen im php code eingesetzt werden, also für jeden smiliiecode

soll jedes mal das ausgegeben werden mit dem passenden bild . ist das verständlich?

$text = preg_replace("/\:D/si", "<img src=\"".$smilie_pfad."bigrin.gif\" alt=\"*biggrin*\"/>", $text);

crooked am 14.09.06 15:38

http://tut.php-q.net/guestbook-smilie.html -.-

fish fish am 14.09.06 16:34

ich glaube ihr habt mich nicht verstanden... schade...


also nochmal. es gibt ja verscheidene smileieCODES, zb :) :-) und so weiter.

und dann gibt es auch smilieBILDER wie zum beispiel das hier http://forum.webstatt.org/images/smilies/biggrin.gif

ich will jetzt jedem smilieBILD mehrere smilieCODES zuweisen können. und weil ich keine lust habe den oben angegebenen phpcode teil jedes mal neu kopieren und einzufügen, will ich es anders haben. ich will in eine funktion die bbcodes und den namen übergeben und diese dann in den oben von mir zitierten code einfürgen lassen...

zb

mach_mir_jetzt_die_smilies (":-D", ":-)" ,":)", "BILDNAME.gif",$TEXT)

und als ausgabe dann sein

$text = preg_replace("/\:-D/si", "<img src=\"".$smilie_pfad."BILDNAME.gif\" alt=\"*BILDNAME*\"/>", $text);
$text = preg_replace("/\:-)D/si", "<img src=\"".$smilie_pfad."BILDNAME.gif\" alt=\"*BILDNAME*\"/>", $text);
$text = preg_replace("/\:)/si", "<img src=\"".$smilie_pfad."BILDNAME.gif\" alt=\"*BILDNAME*\"/>", $text);

IST DAS SO SCHWER? :(

milahu milahu am 14.09.06 16:58

$smilies = array(
':)' => '[:)]',
':-)' => '[:)]',
':o)' => '[:)]',
':(' => '[:(]',
':-(' => '[:(]',
':o(' => '[:(]'
);

foreach ($smilies as $find => $replace) {
$text = str_replace($find, $replace, $text);
}

preg_replace() ist hier die sprichwörtliche Kanone auf die Spatzen ;)

Michael Michael am 14.09.06 17:20

Meinst du so:

function meinst_du_das_so($smilies,$bild,$alt,$smilie_pfad,$text) {
$text = str_replace($smilies, "<img src=\"$smilie_pfad$bild\" alt=\"*$alt*\"/>", $text);

return $text;
}


Alernativ kannst su st_replace auch direkt einen Array als ersten Parameter übergeben und nur einen Ersatztext - dann wird der für jedes Element benutzt

fish fish am 14.09.06 18:26

statt $ smilies halt gaanz viele smiliecodes

Michael Michael am 14.09.06 19:01

$smilies = array('1','2','3','4');

milahu milahu am 14.09.06 20:21

Der Trick funktioniert aber nur, wenn die ersten beiden Argumente Arrays gleicher Länge sind.

Was spricht denn gegen mein Beispiel? :'(

Michael Michael am 14.09.06 21:14

Wenn das zweite Argument ein String ist, wird der für jedes Element des ersten benutzt.
Also genau was er wollte (sofern ich fish richtig verstanden habe)

Er möchte eine Funktion haben, die verschiedene Textfolgen mit dem gleichen Smily ersetzt, einfach damit er es nicht mit Copy&Paste ganz oft untereinenader schreiben muss?

fish fish am 14.09.06 21:23

ja halt schon so schauts aus..


ich will sowas vermeinden:

//:D
$text = preg_replace("/\:D/si",
"<img src=\"".$smilie_pfad."grin.gif\" alt=\"*grins*\"/>", $text);
//:-D
$text = preg_replace("/\:-D/si",
"<img src=\"".$smilie_pfad."biggrin.gif\" alt=\"*grins*\"/>", $text);

//:|
$text = preg_replace("/\:\|/si",
"<img src=\"".$smilie_pfad."worried.gif\" alt=\"*worried*\"/>", $text);

//;)
$text = preg_replace("/\;\)/si",
"<img src=\"".$smilie_pfad."wink.gif\" alt=\"*zwinker*\"/>", $text);

//:P
$text = preg_replace("/\:P/si",
"<img src=\"".$smilie_pfad."tongue.gif\" alt=\"*worried*\"/>", $text);
//:P
$text = preg_replace("/\:-P/si",
"<img src=\"".$smilie_pfad."tongue.gif\" alt=\"*worried*\"/>", $text);

//;P
$text = preg_replace("/\;P/si",
"<img src=\"".$smilie_pfad."tongue.gif\" alt=\"*worried*\"/>", $text);

//o0
$text = preg_replace("/0o/si",
"<img src=\"".$smilie_pfad."suspicious.gif\" alt=\"*hmm*\"/>", $text);

//o0
$text = preg_replace("/\o0/si",
"<img src=\"".$smilie_pfad."suspicious.gif\" alt=\"*hoe*\"/>", $text);

//°_°
$text = preg_replace("/°_°/si",
"<img src=\"".$smilie_pfad."normal.gif\" alt=\"*pokerface*\"/>", $text);
//-.-
$text = preg_replace("/-.-/si",
"<img src=\"".$smilie_pfad."normal.gif\" alt=\"*pokerface*\"/>", $text);

Michael Michael am 14.09.06 21:41

gleiche könntest du immer so zusammenfassen;

$search = array('°_°','-_-');
$text = str_replace($search,"<img src=\"".$smilie_pfad."normal.gif\" alt=\"*pokerface*\"/>", $text);

milahu milahu am 14.09.06 21:46

> Wenn das zweite Argument ein String ist, wird der für jedes Element des ersten benutzt.

Stümmt.. hatte da wohl vorher beim ausprobieren was vermurkst ;)

Die offizielle manpage zu str_replace is aber auch selten schlecht.. :S


fish, du Vogel.. wozu gibt's denn arrays und Schleifen? :P

fish fish am 14.09.06 21:52

schau mal auf meinen 1. post... kannst du mir jetzt ne schleife machen?
oder halt ne funktion dass ich nicht so viel schreiben muss, nur noch die smileys und das bild?

milahu milahu am 14.09.06 22:04

Da hassu, sogar mit Titeln ;)

$smilies = array(
':D' => array('biggrin.gif', 'biggrin'),
':-D' => array('biggrin.gif', 'biggrin'),
':LOLOMGWTF:' => array('biggrin.gif', 'biggrin'),
);

foreach ($smilies as $find => $replace) {
list($img, $title) = $replace;
$replace = '<img src="'.$img.'" alt="'
.$find.'" title="'.$title.'" />';
$text = str_replace($find, $replace, $text);
}

fish fish am 14.09.06 22:40

DANKEH!
ihr seid alle tol .. :D

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

Impressum & Kontakt