"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005
1
| $news = preg_replace(htmlentities($find), $rowSmileys['smiley_code'], $rowSmileys['smiley_path'], $news); |
probeer dit eens preg_replace (en str_replace) kunnen met array's werken dus hoeft er geen foreach functie voor te pleuren.
Dat is redelijk loos, je kunt toch gewoon zoiets doen:De oplossing is redelijk simpel. Ik bouw een extra kolom in mijn tabel waar ik de lengte van de smiley code string in opsla.
1
| SELECT * FROM smilies ORDER BY LENGTH(code) DESC |
Iedere normale database ondersteunt als het goed is die LENGTH-functie.... en dan heb je het redelijk snel voor elkaar, gewoon in je huidige query die ORDER BY... toevoegen
Kijk 'es in je php.ini of via phpinfo() of je magic_quotes_gpc aan hebt staan? Als dat aanstaat worden variables uit Get, Post en Cookies (GPC) met addslashes bewerkt voordat je ze in je script gebruiktDe varaibele wordt via een $_POST opgehaald.
[ Voor 28% gewijzigd door MisterData op 10-09-2004 08:32 ]
magic_quotes_gpc stond inderdaad aan, terwijl ik het getest heb met magic_quotes_gpc uit.
Even testen of magic_quotes_gpc aan staat: zo ja niets doen en anders addslashes gebruiken.
4Real:
Ik snap je code niet helemaal: kan het niet gewoon zo?
1
2
3
| <? $news = preg_replace($Smileys['smiley_code'], $Smileys['smiley_path'], $news); ?> |
dit omdat $Smileys mijn array is die ik meegeef aan de functie
[ Voor 37% gewijzigd door Schonhose op 10-09-2004 08:56 ]
"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005
str_replace accepteert ook array's4Real schreef op 10 september 2004 @ 08:30:
PHP:
1 $news = preg_replace(htmlentities($find), $rowSmileys['smiley_code'], $rowSmileys['smiley_path'], $news);
probeer dit eens preg_replace (en str_replace) kunnen met array's werken dus hoeft er geen foreach functie voor te pleuren.
Programmer - an organism that turns coffee into software.
1
2
3
| $codes = array(":)",":(",":P",":X",":|"); $replace = array("blij","boos","tong","mond_dicht","vaag"); $nieuwetext = str_replace($codes,$replace,$oudetext); |
Dit is juist ideaal voor een associative array IMHO.MisterData schreef op 10 september 2004 @ 10:24:
Ter verduidelijking: je kunt dus gewoon dit doen:
PHP:
1 2 3 $codes = array(":)",":(",":P",":X",":|"); $replace = array("blij","boos","tong","mond_dicht","vaag"); $nieuwetext = str_replace($codes,$replace,$oudetext);
En wat jij voorstelt doe ik nu ook, maar dan in een foreach functie. Uit de verhalen maak ik op dat dit niet meer hoeft en dan ik alleen preg_replace kan gebruiken.
De voorbeelden snap ik, maar hoe werkt het met een associative array?
1
2
3
4
| $str=":) Test :P"; $assoc[':)'] = "Smile"; $assoc[':P'] = "Tongue"; |
ik kom niet op de juiste preg_replace
[ Voor 31% gewijzigd door Schonhose op 10-09-2004 11:14 ]
"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005
Verwijderd
1
2
3
4
| $find = array_keys($smilies); $replace = array_values($smilies); $body = str_replace($codes, $replace, $body); |