Toon posts:

[PHP] Regexp volgorde probleem *

Pagina: 1
Acties:
  • 27 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik wil de volgende tags omzetten naar html:

code:
1
2
3
4
[b]tekst[/b]
[i]tekst[/i]
[img=plaatje.gif]
[url=www.website.nl]tekst[/url]


Daar heb ik de volgende code voor:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        // o_text   
    $o_text = $_POST[o_text];
    // replace [b] & [/b]
    $p1 = '/\[b\]/si';
    $p2 = '<b>';
    $o_text = preg_replace($p1, $p2, $o_text);
    $p1 = '/\[\/b\]/si';
    $p2 = '</b>';
    $o_text = preg_replace($p1, $p2, $o_text);
    // replace [i] & [/i]
    $p1 = '/\[i\]/si';
    $p2 = '<i>';
    $o_text = preg_replace($p1, $p2, $o_text);
    $p1 = '/\[\/i\]/si';
    $p2 = '</i>';
    $o_text = preg_replace($p1, $p2, $o_text);
    // replace [img]
    $p1 = '/\[img=(.+)\]/si';
    $p2 = '<img src=\"images\/user\/\\1\" border=\"0\" />';
    $o_text = preg_replace($p1, $p2, $o_text);
    // replace [url]
    $p1 = '/\[url=(.+)\](.+)\[\/url\]/si';
    $p2 = '<a href=\"\\1\">\\2</a>';
    $o_text = preg_replace($p1, $p2, $o_text);


Individueel werken ze perfect, maar zodra ik ze ga combineren krijg ik een rare output:

code:
1
[url=http://www.msn.nl/][img=image.jpg][/url]
wordt:
code:
1
[url=http://www.msn.nl/]<img src="images/user/image.jpg][/url" border="0" />


Ligt het aan de volgorde? Wat doe ik verkeerd?

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 22:14

orf

Uit de volgorde kun je inderdaad dit gevolg afleiden.
Met je replaces kun je op deze manier geen geldige HTML afdwingen. Bij foute nesting krijg je foute HTML. Dat is iets wat je ten alle tijden wilt voorkomen.

Zoek eens naar bestaande bb-code classes of functies. Het wiel dat je nu aan het uitvinden bent is een slechter wiel.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Even wat tipjes:

[ Voor 6% gewijzigd door RobIII op 19-06-2007 19:01 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.