Avatar billede henrywood Nybegynder
24. september 2002 - 18:27 Der er 6 kommentarer og
1 løsning

Et regexp som erstatter forekomster af > og <

Hej

Jeg har brug for hjælp til 3 regexp:

Jeg har en streng der kan indeholde PHP
I denne streng vil jeg gerne have alle forekomster af &gt; og &lt som står indenfor et <?php...?> eller <?...?> tag erstattet af < og >

Derudover vil jeg gerne have hjælp til et regexp der erstatter alle forekomster af <//(en vilkårlig streng//> med <img src="/editor/i3/pp.gif"><!--TAG:(tekststrengen igen)-->

Endelig vil jeg gerne have hjælp til et regexp der konverterer dette IMG tag fra før tilbage til formen <//(tekststreng)//>
Avatar billede henrywood Nybegynder
24. september 2002 - 18:28 #1
Beklager at jeg fik angivet den titel på spørgsmålet
Avatar billede postndk Nybegynder
24. september 2002 - 18:30 #2
$nyting = str_replace("&lt;","<",$ting);
Avatar billede jespernaur Nybegynder
24. september 2002 - 20:22 #3
Det fremgår ikke hvilket sprog du ønsker løsningen i, men nu er jeg gået ud fra PHP. Her er en løsning på nummer 2:

  $txt = 't1<//t2//>t3<//t4//>t5';
  $result = preg_replace(
                '#<//([^/]+?)//>#',
                '<img src="/editor/i3/pp.gif"><!--TAG:(\\1)-->',
                $txt );

Mvh
Jesper Naur

(fortsættelse følger)
Avatar billede jespernaur Nybegynder
24. september 2002 - 20:36 #4
Her er en løsning på nummer 3:

  $txt = 't1<img src="/editor/i3/pp.gif"><!--TAG:(t2)-->t3' .
            '<img src="/editor/i3/pp.gif"><!--TAG:(t4)-->t5';

  $result = preg_replace(
                '#<img src="/editor/i3/pp.gif"><!--TAG:\(([^\(]+)\)-->#',
                '<//\\1//>',
                $txt );

Mvh
Jesper Naur
Avatar billede jespernaur Nybegynder
24. september 2002 - 20:49 #5
Ups, den sidste skulle have været:

  $result = preg_replace(
                '#<img src="/editor/i3/pp.gif"><!--TAG:\(([^\)]+)\)-->#',
                '<//\\1//>',
                $txt );

(den skal tillade alt undtagen slutparantes (IKKE begyndparantes!) inde i TAG:(xxx))
Avatar billede henrywood Nybegynder
24. september 2002 - 23:15 #6
Beklager, at jeg ikke skrev det skulle være javascript :((
Og hvad betyder # i de regexp ?
Avatar billede jespernaur Nybegynder
25. september 2002 - 18:12 #7
Så koder vi om i java script:

Nummer 2:

  var txt = 't1<//t2//>t3<//t4//>t5';
  var result =
          txt.replace( /<\/\/([^\/]+?)\/\/>/g,
                      '<img src="/editor/i3/pp.gif"><!--TAG:($1)-->' );

Nummer 3:
  txt = 't1<img src="/editor/i3/pp.gif"><!--TAG:(t2)-->t3' +
        '<img src="/editor/i3/pp.gif"><!--TAG:(t4)-->t5';

  result = txt.replace(
                /<img src="\/editor\/i3\/pp.gif"><!--TAG:\(([^\(]+)\)-->/g,
                '<//$1//>' );

Forklaring på #: I PHP funktionerne preg_xxx skal selve regex-teksten indeholde start- og slut-delimiter. Som regel vælger man / men i tilfældet her valgte jeg # for at undgå problemer med de mange / i selve udtrykket. Dette virker tilsyneladende ikke i Javascript, og resultatet er som du ser en \ før hver / i udtrykket.

Mvh
Jesper Naur
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester