[PHP] replace lijkt niet goed te werken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer zelf een paar ubb codes te maken, bijvoorbeeld [pic] en [/pic]. Deze codes moeten dan natuurlijk veranderd worden in <img src= en >.

Ik doe dit met behulp van een database. Eén veld is het orgineel ([pic] dus) en het andere veld is de vervanging (<img src= ).

vervolgens zorg ik met de volgende code dat er geen ubb codes, maar html de database ingaat:

PHP:
1
2
3
4
5
6
$query2 = "select * from vervang";
$result2 = mysql_query($query2);
while (list ($id, $orgineel, $vervanging)  = mysql_fetch_array ($result2))
    {
    $inhoud = ereg_replace($orgineel, $vervanging, $inhoud);
    }


Nu werkt dit systeem prima met smilies. Als ik bij orgneel :-) in m'n database heb staan kan ik dat laten vervangen door een url naar een smilie.

Het probleem is dat het niet werkt met [pic] en [url] en dergelijke. Als ik met [pic] en [/pic] een afbeelding wil laten zien, komen er zulke dingen in te staan:

[<>mg sr>=<>mg sr>=<>mg sr>=]htt<>mg sr>=:>>front<>mg sr>=age.fok.nl><>mg sr>=>r<>mg sr>=ght.j<>mg sr>=g[><>mg sr>=<>mg sr>=<>mg sr>=]
(als een een afbeelding van fok wil laten zien)

ik heb het ook al geprobeerd met str_replace en preg_replace, maar beiden leveren hetzelfde resultaat. Het rare is dat het wel werkt als ik geen tags gebruik met "[" erin. Als ik bijvoorbeeld "sjaak" (zonder aanhalingstekens) laat vervangen door "[img]",[/img]" dan laat hij ineens wel een afbeelding zien.

Weet iemand wat ik fout doen?

[ Voor 49% gewijzigd door Verwijderd op 05-04-2003 14:53 ]


Acties:
  • 0 Henk 'm!

Verwijderd

[ en ] zijn betekenisvol binnen een regular expression, daar moet je dus een backslash voor zetten..
Maar ik raad je aan om met str_replace te werken aangezien je denk eigenlijk geen nood hebt aan regex ?
Verder kan je str_replace twee arrays te eten geven voor search en replace, wat de boel misschien wel wat sneller kan maken (str_replace is overigens altijd sneller dan ereg_replace).

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

een [pic]http://www.url.com/plaatje.gif[/pic] met str_replace vervangen naar [img]"http://www.url.com/plaatje.gif"[/img] zal je niet gaan lukken; daar heb je echt een regexp voor nodig. Bijvoorbeeld zoiets:
PHP:
1
$content = preg_replace('/\\[pic\](http:\/\/)??(.+)\\[\/pic\]/Ui', '[img]"http://$2"[/img]', $content);

[ Voor 15% gewijzigd door crisp op 05-04-2003 17:59 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Weet je misschien een plaats (site) waar dit wordt uitgelegd? want hier snap ik nog niet zoveel van ;)

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oke, dom dom dom dom.
Ik had helemaal niets ge-escaped. Als ik gewoon \\[pic\] en \\[\/pic\] in m'n database zet werkt alles prima. THX voor de tips

[ Voor 83% gewijzigd door Verwijderd op 07-04-2003 01:41 ]

Pagina: 1