[PHP] Replacen met preg_replace() gaat niet goed

Pagina: 1
Acties:

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
[php]<?
$saToReplace = array( "'\n'",
"'\\[quote\](.*)\\[\/quote\]'i",
"'\\[b\](.*)\\[\/b\]'i",
"'\\[i\](.*)\\[\/i\]'i",
"'\\[u\](.*)\\[\/u\]'i",
"'\
code:
1
2
3
4
5
6
7
8
9
10
(.*)\\[\/code\]'i" );
        $saReplaceWith = array( "<br>",
                    "<center><table><tr><td class = \"indent-td\"><b style = \"font-size: 7pt;\">quote</b><hr>\\1<hr></td></tr></table></center>",
                    "<b>\\1</b>",
                    "<i>\\1</i>",
                    "<u>\\1</u>",
                    "<center><table><tr><td class = \"indent-td\"><b style = \"font-size: 7pt;\">quote</b><hr><div class = \"code-div\">\\1</div><hr></td></tr></table></center>" );
        
        $sText = preg_replace( $saToReplace, $saReplaceWith, $sText );
?>

Ik voor het hierbovenstaande uit met de volgende input:
code:
1
2
3
4
5
6
7
Some tags:
[ quote]Quoted[ /quote]
[ code]Code[ /code]
[ b]Bold[ /b]
[ i]Italic[ /i]
[ u]Underscored[ /u]
[ b][ i][ u]Combined[ /u][ /i][ /b]

Maar nu kom ik met het probleem dat hij bij de "'\\[b\](.*)\b\/\]'i" Hij de [ b] pakt van [ b]Bold[ /b] en de [ /b] van [ b][ i][ u]Combined[ /u][ /i][ /b].

Hoe kan ik dit probleem oplossen?

De spaties moet je overal maar even wegdenken anders ging Topix moeilijk doen :(

=( Protected by witchcraft )=


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
even bij .* een ? toevoegen.
[php]<?
$saToReplace = array( "'\n'",
"'\\[quote\](.*?)\\[\/quote\]'i",
"'\\[b\](.*?)\\[\/b\]'i",
"'\\[i\](.*?)\\[\/i\]'i",
"'\\[u\](.*?)\\[\/u\]'i",
"'\
code:
1
2
3
4
5
6
7
8
9
10
(.*?)\\[\/code\]'i" );
        $saReplaceWith = array( "<br>",
                    "<center><table><tr><td class = \"indent-td\"><b style = \"font-size: 7pt;\">quote</b><hr>\\1<hr></td></tr></table></center>",
                    "<b>\\1</b>",
                    "<i>\\1</i>",
                    "<u>\\1</u>",
                    "<center><table><tr><td class = \"indent-td\"><b style = \"font-size: 7pt;\">code</b><hr><div class = \"code-div\">\\1</div><hr></td></tr></table></center>" );
        
        $sText = preg_replace( $saToReplace, $saReplaceWith, $sText );
?>

Dan werkt het met die input bij mij wel.

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
Met dank aan RdeTuinman, het werkt inderdaad...

=( Protected by witchcraft )=


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
*D :Y)

  • tomato
  • Registratie: November 1999
  • Niet online
Of een /U modifier toevoegen...