[PHP] str_replace doet te goed zijn werk

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Hey,
voor op deze site heb ik een str_replace scriptje gemaakt die alle smilie-codes zoals :) omzet in :). Nu werkt dit prima, ware het niet dat bijvoorbeeld 8)7 wordt geparsed als 8)7.
Hetzelfde met 7(8)7, >:) en }:O (zoals te zien is op deze pagina).

Nu zal er wel weer iets simpels zijn om dit goed te laten werken, maar via de search van GoT, en Google en php.net werd ik niet echt wijzer (verkeerde keywords waarschijnlijk :S).
Mijn code is dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
$code=array(":)",":(",";)",">:)",":>",":P",":9",":o",":*)",":'(","8)",":+",":D","_/-\o_",":9~","O+",":O","}:O",":/",":|",":X",":?","8)7","|:(","O-)",":z",";(",":r","B)",":Y)","(8>",":7",":Z","})","B-)",":w","d:)b","7(8)7","*;","<+:)","^)",":$","}:|",":')",":S",":Y",":N","*O*","-O-","_O-"); 

        $imgs=array("<img src=\"visuals/smilies/smile.gif\" />",
        "<img src=\"visuals/smilies/frown.gif\" />",
"<img src=\"visuals/smilies/wink.gif\" />",
"<img src=\"visuals/smilies/devil.gif\" />",
"<img src=\"visuals/smilies/puh.gif\" />",
"<img src=\"visuals/smilies/puh2.gif\" />",
"<img src=\"visuals/smilies/yummie.gif\" />",
"<img src=\"visuals/smilies/redface.gif\" />",
"<img src=\"visuals/smilies/shiny.gif\" />",
"<img src=\"visuals/smilies/cry.gif\" />",
"<img src=\"visuals/smilies/coool.gif\" />",
"<img src=\"visuals/smilies/clown.gif\" />",
"<img src=\"visuals/smilies/biggrin.gif\" />",
"<img src=\"visuals/smilies/worshippy.gif\" />",
"<img src=\"visuals/smilies/kwijl.gif\" />",
"<img src=\"visuals/smilies/heart.gif\" />",
"<img src=\"visuals/smilies/yawnee.gif\" />",
"<img src=\"visuals/smilies/rc5.gif\" />",
"<img src=\"visuals/smilies/nosmile.gif\" />",
"<img src=\"visuals/smilies/nosmile2.gif\" />",
"<img src=\"visuals/smilies/shutup.gif\" />",
"<img src=\"visuals/smilies/confused.gif\" />",
"<img src=\"visuals/smilies/bonk.gif\" />",
"<img src=\"visuals/smilies/frusty.gif\" />",
"<img src=\"visuals/smilies/hypocrite.gif\" />",
"<img src=\"visuals/smilies/sleephappy.gif\" />",
"<img src=\"visuals/smilies/sadley.gif\" />",
"<img src=\"visuals/smilies/pukey.gif\" />",
"<img src=\"visuals/smilies/nerd.gif\" />",
"<img src=\"visuals/smilies/vork.gif\" />",
"<img src=\"visuals/smilies/baard.gif\" />",
"<img src=\"visuals/smilies/loveit.gif\" />",
"<img src=\"visuals/smilies/sleepey.gif\" />",
"<img src=\"visuals/smilies/devilish.gif\" />",
"<img src=\"visuals/smilies/shadey.gif\" />",
"<img src=\"visuals/smilies/bye.gif\" />",
"<img src=\"visuals/smilies/thumbsup.gif\" />",
"<img src=\"visuals/smilies/bonk3.gif\" />",
"<img src=\"visuals/smilies/loveys.gif\" />",
"<img src=\"visuals/smilies/sintsmiley.gif\" />",
"<img src=\"visuals/smilies/marrysmile.gif\" />",
"<img src=\"visuals/smilies/bloos.gif\" />",
"<img src=\"visuals/smilies/eerie.gif\" />",
"<img src=\"visuals/smilies/emo.gif\" />",
"<img src=\"visuals/smilies/huh.gif\" />",
"<img src=\"visuals/smilies/yes.gif\" />",
"<img src=\"visuals/smilies/no.gif\" />",
"<img src=\"visuals/smilies/pompom.gif\" />",
"<img src=\"visuals/smilies/nopompom.gif\" />",
"<img src=\"visuals/smilies/lol.gif\" />"
    );
$bericht = str_replace($code,$imgs,$fetch->bericht);

Wat moet ik bij de laatste regel veranderen om het goed werkend te krijgen?

Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 20:32
Sorteer de array op lengte van tags, met de langste tags als eerst :)

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

of strtr() gebruiken

[ Voor 7% gewijzigd door crisp op 07-08-2006 00:48 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Wim Leers
  • Registratie: Januari 2004
  • Laatst online: 09-09 08:00
Morax schreef op maandag 07 augustus 2006 @ 00:44:
Sorteer de array op lengte van tags, met de langste tags als eerst :)
Inderdaad de makkelijkste oplossing :)

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
It couldn't be thát simple!

Edit; ja dus :) Dóh! Dankje!
@hieronder; ik zal de FAQ even uitpluizen :)

Je hebt gelijk,
Het gebruik van is slechts voorbehouden aan Tweakers.net en Fokzine, aangezien deze smiley speciaal voor iemand gemaakt is (mensen van de oude garde weten vast wel wie). De rest staat, uiteraard na voldaan te hebben aan bovengenoemde punten, je geheel ter beschikking.
Ik zal 'm er af halen :) Wel jammer though ;)

En even voor het archief, de uiteindelijke code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
$code=array("}:|","d:)b","7(8)7","*;","<+:)","^)","|:(",">:)",":)",":(",";)",":>",":P",":9",":o",":*)",":'(","8)",":+",":D","_/-\o_",":9~","}:O",":O",":/",":|",":X",":?","8)7","O-)",":z",";(",":r","B)",":Y)","(8>",":7",":Z","})","B-)",":w",":$",":')",":S",":Y",":N","*O*","-O-","_O-"); 

$imgs=array("<img src=\"visuals/smilies/eerie.gif\" />",
"<img src=\"visuals/smilies/thumbsup.gif\" />",
"<img src=\"visuals/smilies/bonk3.gif\" />",
"<img src=\"visuals/smilies/loveys.gif\" />",
"<img src=\"visuals/smilies/sintsmiley.gif\" />",
"<img src=\"visuals/smilies/frusty.gif\" />",
"<img src=\"visuals/smilies/marrysmile.gif\" />",
"<img src=\"visuals/smilies/devil.gif\" />",
"<img src=\"visuals/smilies/smile.gif\" />",
"<img src=\"visuals/smilies/frown.gif\" />",
"<img src=\"visuals/smilies/wink.gif\" />",
"<img src=\"visuals/smilies/puh.gif\" />",
"<img src=\"visuals/smilies/puh2.gif\" />",
"<img src=\"visuals/smilies/yummie.gif\" />",
"<img src=\"visuals/smilies/redface.gif\" />",
"<img src=\"visuals/smilies/shiny.gif\" />",
"<img src=\"visuals/smilies/cry.gif\" />",
"<img src=\"visuals/smilies/coool.gif\" />",
"<img src=\"visuals/smilies/clown.gif\" />",
"<img src=\"visuals/smilies/biggrin.gif\" />",
"<img src=\"visuals/smilies/worshippy.gif\" />",
"<img src=\"visuals/smilies/kwijl.gif\" />",
"<img src=\"visuals/smilies/rc5.gif\" />",
"<img src=\"visuals/smilies/yawnee.gif\" />",
"<img src=\"visuals/smilies/nosmile.gif\" />",
"<img src=\"visuals/smilies/nosmile2.gif\" />",
"<img src=\"visuals/smilies/shutup.gif\" />",
"<img src=\"visuals/smilies/confused.gif\" />",
"<img src=\"visuals/smilies/bonk.gif\" />",
"<img src=\"visuals/smilies/hypocrite.gif\" />",
"<img src=\"visuals/smilies/sleephappy.gif\" />",
"<img src=\"visuals/smilies/sadley.gif\" />",
"<img src=\"visuals/smilies/pukey.gif\" />",
"<img src=\"visuals/smilies/nerd.gif\" />",
"<img src=\"visuals/smilies/vork.gif\" />",
"<img src=\"visuals/smilies/baard.gif\" />",
"<img src=\"visuals/smilies/loveit.gif\" />",
"<img src=\"visuals/smilies/sleepey.gif\" />",
"<img src=\"visuals/smilies/devilish.gif\" />",
"<img src=\"visuals/smilies/shadey.gif\" />",
"<img src=\"visuals/smilies/bye.gif\" />",
"<img src=\"visuals/smilies/bloos.gif\" />",
"<img src=\"visuals/smilies/emo.gif\" />",
"<img src=\"visuals/smilies/huh.gif\" />",
"<img src=\"visuals/smilies/yes.gif\" />",
"<img src=\"visuals/smilies/no.gif\" />",
"<img src=\"visuals/smilies/pompom.gif\" />",
"<img src=\"visuals/smilies/nopompom.gif\" />",
"<img src=\"visuals/smilies/lol.gif\" />"
    );
$bericht = str_replace($code,$imgs,$fetch->bericht);

[ Voor 201% gewijzigd door Peedy op 07-08-2006 00:57 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

offtopic:
Overigens mag je O+ niet gebruiken, die is speciaal gemaakt voor Tweakers/Fok! en exclusief op die sites toegestaan, AFAIK. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Misschien wil je toch overwegen om een andere aanpak te hanteren, aangezien dit nou niet bepaald lekker onderhoudbaar is vind je niet? Ik bedoel, nu moet je zelf het verband leggen tussen wat er in $code zit en in $imgs, terwijl je daar dus prima gewoon een map voor kan gebruiken; in php is dat gewoon de 'array'.

b.v.
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php

    $smileyToImageMapping = array ( ":)" => "smile.gif",
                                    ":(" => "frown.gif");
                                    
    foreach ($smileyToImageMapping as $code => $imgName)
    {
        $bericht = str_replace($code, "<img src=".$imgName." />", $bericht);
    }

?>


Zou denk ik al een flinke verbetering zijn, zeker als je nog overweegt om constanten op te nemen voor de paden van je images oid, en evt het concatten abstracter doet.
Pagina: 1