Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   Perl: Het 's///' commando (https://forum.scholieren.com/showthread.php?t=132923)

eddie 19-06-2002 17:25

Tja... hoe werkt dit goed met variabelen?

Ik heb een variabele met de tekst ':)' een smiley dus, en die wil ik vervangen door bijvoorbeeld 'http://forum.scholieren.com/images/smilies/smile.gif'

Fijn... dat vervangen lukt, maar hij doet wat fout.
In de tekst:

'Jaa: Hij doet het :)', staan 3 smiley's. 2 voor de ':' en een voor de ')'.

Hij gaat dus elk karakter af in de PATTERN, maar dit wil ik niet. Hoe krijg ik dit goed?

Mijn code:
Code:

$cKarakterreeks = ":)";
$cPlaatje = "http://forum.scholieren.com/images/smilies/smile.gif";
$cTekst =~ s/[$cKarakterreeks]/<IMG SRC=\"$cPlaatje\">/gs;

PS: De karakterreeks en plaatje komen natuurlijk uit een database...

Chimera 19-06-2002 18:05

Ik neem dat dit regexpes zijn? Als je characters tussen blokhaken zet is het een range. [:)] matched dus elke occurence van : en ).

Chip Zero 19-06-2002 18:22

Zo doe je dat:
Code:

$cKarakterreeks = ":-??\\)";
$cPlaatje = "http://forum.scholieren.com/images/smilies/smile.gif";
$cTekst =~ s/$cKarakterreeks/<IMG SRC=\"$cPlaatje\">/gs;

Die ?? achter het streepje betekent dat het ook een smiley met een streepje als neus mag zijn. En dat sluithaakje sluiten heeft een speciale betekenis in een regexp, dus er moet een backslash voor. En dan nog eentje omdat je die backslash letterlijk in die var wilt hebben.

eddie 19-06-2002 19:50

Citaat:

Chip Zero schreef:
En dat sluithaakje sluiten heeft een speciale betekenis in een regexp, dus er moet een backslash voor
:eek: :o
*bonkt hoofd 3 keer tegen muur*

Natuuuuurlijk...


Alle tijden zijn GMT +1. Het is nu 03:35.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.