Ik heb een tabel met allemaal smileys en de bijbehorende codes. Deze lees ik allemaal uit in array. Deze array is opgebouwd als:
Dit levert me dus een array aan met de code en de bijbehorende path naar de smiley.
Vervolgens parse ik de tekst via:
maar deze is te greedy. Bijvoorbeeld wanneer ik de smileycode
neem wordt deze vervangen door de
omdat deze als eerste in de array voorkomt (eerder dan de andere). De oplossing is redelijk simpel. Ik bouw een extra kolom in mijn tabel waar ik de lengte van de smiley code string in opsla. Door bij het vullen van de array de SQL query zo in te stellen dat de grootste lengte als eerste eruit gehaald moet worden moet het naar mijn idee goed gaan.
Mijn vraag is of er nog makkelijkere manieren te bedenken zijn dan bovengenoemde oplossing. (Dus zonder aanpassing van de tabel)
Tot slot heb ik nog een probleem met een replace. Ik wil graag de \ vervangen door een / en dacht daarvoor de onderstaande functie te gebruiken:
maar dit levert met een input van "test\image.png" de output "test//image.png".
Er wordt verder niets uitgevoerd op deze variabele dus geen (addslashes). De varaibele wordt via een $_POST opgehaald.
PHP:
1
| $Smileys[$rowSmileys['smiley_code']] = $rowSmileys['smiley_path']; |
Dit levert me dus een array aan met de code en de bijbehorende path naar de smiley.
Vervolgens parse ik de tekst via:
PHP:
1
2
3
4
| foreach ($Smileys AS $find => $FileName) { $news = str_replace(htmlentities($find), "[img]'".[/img]", $news); } |
maar deze is te greedy. Bijvoorbeeld wanneer ik de smileycode
code:
1
| b:)d |
neem wordt deze vervangen door de
code:
1
| :) |
omdat deze als eerste in de array voorkomt (eerder dan de andere). De oplossing is redelijk simpel. Ik bouw een extra kolom in mijn tabel waar ik de lengte van de smiley code string in opsla. Door bij het vullen van de array de SQL query zo in te stellen dat de grootste lengte als eerste eruit gehaald moet worden moet het naar mijn idee goed gaan.
Mijn vraag is of er nog makkelijkere manieren te bedenken zijn dan bovengenoemde oplossing. (Dus zonder aanpassing van de tabel)
Tot slot heb ik nog een probleem met een replace. Ik wil graag de \ vervangen door een / en dacht daarvoor de onderstaande functie te gebruiken:
PHP:
1
| $smiley_path = str_replace("\\", "/", $smiley_path); |
maar dit levert met een input van "test\image.png" de output "test//image.png".
Er wordt verder niets uitgevoerd op deze variabele dus geen (addslashes). De varaibele wordt via een $_POST opgehaald.
"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