[php]UBB code perikelen

Pagina: 1
Acties:

  • rickmans
  • Registratie: Juli 2001
  • Niet online
Ik heb een UBB code die op zich wel lekker werkt echter een paar dingen werken niet zoals het moet.

Als eerste heb ik een stukje code welke zorgt voor het vervangen van emailadressen door klikbare exemplaren, echter het tweede stukje code gaat rustig nog vervangingen doen in de uitkomst van het tweede stukje code. Wat moet ik hieraan veranderen wil het wel de dingen doen die ik wil :):
PHP:
1
2
3
4
5
// email adressen invoeren
$artikel = preg_replace('#\\[email=([^\]]+)]([^[]+)\[/email]#i', '<a href="mailto:$1" class="body">$2</a>', $artikel);
// zorgt voor een klikbaar emailadres
// is alleen iets te aggressief met de vorige :{
$artikel = eregi_replace("[[:graph:]]+@[^<>[:space:]]+[[:alnum:]]", "<a href=\"mailto:\\0\" class=\"body\">\\0</a>", $artikel);


Daarnaast lukt het mij niet om tags te nesten. Zo kan ik het niet voor elkaar krijgen om met deze code
code:
1
[center][url=hyperlink][img]plaatje[/img][/url][/center]
een plaatje te krijgen welke gecentreerd is en linkt naar iets.

De code die ik gebruik voor die tags is:
PHP:
1
2
3
4
5
6
7
// maakt een hyperlink
$artikel = eregi_replace("\\\[url=([^\\\[]*)\\]([^\\\[]*)\\\[/url\\]","<a href=\"\\1\" target=\"_blank\" class=\"body\">\\2</a>",$artikel);
// centreert
$artikel = eregi_replace("\\[center\]","<center>",$artikel); 
$artikel = eregi_replace("\\[/center\]","</center>",$artikel);
//Afbeelding invoegen
$artikel = preg_replace("/\\[img\](.*?)\\[\/img\]/si", "[img]\"\\1\"[/img]", $artikel);
Ook hier weer de vraag, hoe kan ik het oplossen?

Don't mind Rick


  • Grum
  • Registratie: Juni 2001
  • Niet online
Stackbased aanpakken. Eventjes zoeken doet wonderen.

  • flat
  • Registratie: Mei 2000
  • Niet online
zoek eens op stack-based ubb-parser
't is hier echt al heeeel vaak over gegaan

"Happiness is a way of travel, not a destination."
--Roy Goodman


  • rickmans
  • Registratie: Juli 2001
  • Niet online
ik ben iig de parser van ACM tegen gekomen, ik denk dat ik daar wel iets van kan leren :)

Voor de geinteresseerden:
[rml][ BC3] [ php/ubb]Parse engine is "af", graag tips ;)[/rml] en
http://achelois.tweakers.net/~acm/parse/

Maar als iemand mij nog kan wijzen op de fouten of onvolkomenheden in mijn eigen code dan ben ik ook blij, want ik wil nog wel even zien wat er fout aan was. Of is het alleen omdat het niet stackbased is?

[ Voor 2% gewijzigd door ACM op 09-10-2007 22:39 . Reden: zinnetje toegevoegd, vulcanus.its.tudelft.nl is niet meer ]

Don't mind Rick


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 30-08 21:01
PHP:
1
2
$artikel = eregi_replace("\\[center\]","<div align=\"center\">",$artikel);  
$artikel = eregi_replace("\\[/center\]","</div>",$artikel);
Dat werkt iig met plaatjes.

zeroxcool.net - curity.eu


Verwijderd

ZeRoXcOoL schreef op 05 september 2002 @ 11:20:
PHP:
1
2
$artikel = eregi_replace("\\[center\]","<div align=\"center\">",$artikel);  
$artikel = eregi_replace("\\[/center\]","</div>",$artikel);
Dat werkt iig met plaatjes.
Alsjeblieft zeg! Hiervoor heb je dus echt geen regexp nodig:
PHP:
1
2
$artikel = str_replace("[center]", "<div align=\"center\">", $artikel);
$artikel = str_replace("[/center]", "</div>", $artikel);

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Verwijderd schreef op 05 september 2002 @ 12:14:
[...]


Alsjeblieft zeg! Hiervoor heb je dus echt geen regexp nodig:
PHP:
1
2
$artikel = str_replace("[center]", "<div align=\"center\">", $artikel);
$artikel = str_replace("[/center]", "</div>", $artikel);
Dat is dus case-sensitive en waarschijnlijk wil de topic-starter dat niet.

On track


  • rickmans
  • Registratie: Juli 2001
  • Niet online
Voor vrijwel iedere nuttige html tag heb ik een reg exp nodig (en dat gaat best wel goed). Dit om ervoor te zorgen dat de klant
a) geen html kennis hoeft te hebben
b) geen pagina's kan verkloten omdat hij denkt html kennis te hebben

Don't mind Rick


  • Grum
  • Registratie: Juni 2001
  • Niet online
Oftewel je klant moet html kunnen maar dan met blokhaakjes? :D

Verwijderd

Nieko:
(str_replace-voorbeeldje)

WouZz:
Dat is dus case-sensitive en waarschijnlijk wil de topic-starter dat niet.

Daarom is stri_replace() nu in aanvraag, kijk maar op http://bugs.php.net/bug.php?id=5919

  • rickmans
  • Registratie: Juli 2001
  • Niet online
Grum schreef op 05 september 2002 @ 15:10:
Oftewel je klant moet html kunnen maar dan met blokhaakjes? :D
in principe ja, voordeel hiervan is dat als die wat verkeerd doet, je de UBB code ziet en niet of stuk html wat voor een brakke lay-out zorgt :)

Don't mind Rick


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Je kan natuurlijk ook gewoon een Wysiwig editor maken in PHP, want dan geef je de mensen gewoon een soort van online word processor en daar hebben ze naar mijn idee veel meer aan :)

Dan hoeven ze namelijk helemaal geen kennis te hebben van HTML e.d. Het nadeel is wel dat je er zeker van moet zijn dat ze IE5.5 of hoger moeten hebben zodat het goed ondersteund wordt als je het mij vraagt...

Maar, persoonlijk zou ik kiezen voor zo'n oplossing...
Pagina: 1