[php] text align preg_replace werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
ik ben bezig met een script waar een bb parser in zit, maar dit werkt nog niet helemaal lekker met de align functie's Ik heb alleen geen idee waarom niet. Al het andere werkt namelijk wel, en is precies zo opgebouwt.

Codeparse.php:
PHP:
1
2
3
4
5
6
$output = preg_replace ("#\[align=center\](.*)\\[/align\]#si", "<div style=\"text-align: center;\">\\1</div>", $output);
$output = preg_replace ("#\[align=justify\](.*)\\[/align\]#si", "<div style=\"text-align: justify;\">\\1</div>", $output);
$output = preg_replace ("#\[align=right\](.*)\\[/align\]#si", "<div style=\"text-align: right;\">\\1</div>", $output);
$output = preg_replace ("#\[align=left\](.*)\\[/align\]#si", "<div style=\"text-align: left;\">\\1</div>", $output); 

$output = nl2br($output);


Het bericht wat naar html moet worden omgezet:
code:
1
2
3
4
[align=center]centreerd[/align]
[align=justify]justify[/align]
[align=left]left[/align]
[align=right]right[/align]


En dan de uiteindelijke html pagina:
code:
1
2
3
4
<div style="text-align: center;">centreerd[/align]<br />
<div style="text-align: justify;">justify[/align]<br />
[align=left]left</div><br />
[align=right]right</div><br />


Dus die divjes worden om de een of andere vage reden maar half geparsed. Er zit boven de code in codeparse.php geen preg_replace die die align misschien zou kunnen vervangen, dus dat kan't ook niet zijn.

[ Voor 39% gewijzigd door Tha Ertenal op 12-06-2006 23:41 ]

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 08:15
$output = preg_replace ("#\[align=left\](.*)\\[/align\]#si", "<div style=\"text-align: left;\">\\1</div>", $output);

in je ubb tags de [ ] en de / escapen

?

[ Voor 33% gewijzigd door SyphOn op 12-06-2006 23:44 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

Waarom doe je het sowieso in 4 losse expressies?

Daarnaast moet je je regexp ungreedy maken. Dat kan met de U-modifier of met .*? in plaats van .*.
PHP:
1
$output = preg_replace ("#\[align=(center|justify|left|right)\](.*)\\[/align\]#Usi", "<div style=\"text-align: \\1;\">\\2</div>", $output);

[ Voor 21% gewijzigd door NMe op 12-06-2006 23:44 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
ach, idd. een typ foutje. Normaal gebruik ik altijd vraagteken ja, maar met die U werkt het dus ook lekker. En idd, ik had het eerst in één string, maar toen deed ie t dus nie, en dan zet ik altijd alles ff apart.

tnx btw!

[ Voor 3% gewijzigd door Tha Ertenal op 12-06-2006 23:47 ]

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-06 00:38

NMe

Quia Ego Sic Dico.

SyphOn schreef op maandag 12 juni 2006 @ 23:42:
in je ubb tags de [ ] en de / escapen
De [ en ] had ie netjes ge-escaped, en die / hoeft niet ge-escaped te worden omdat het geen speciaal teken is in PCRE en ook niet als delimiter gebruikt wordt in deze regexps. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 08:15
-NMe- schreef op maandag 12 juni 2006 @ 23:54:
[...]

De [ en ] had ie netjes ge-escaped, en die / hoeft niet ge-escaped te worden omdat het geen speciaal teken is in PRCE en ook niet als delimiter gebruikt wordt in deze regexps. :)
Ah kijk dat wist ik niet, ik escape de / altijd maar gewoon. :)
Pagina: 1