Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] PCRE's und Multiline (https://www.delphipraxis.net/23259-%5Bphp%5D-pcres-und-multiline.html)

CalganX 31. Mai 2004 17:13


[PHP] PCRE's und Multiline
 
Hi,
ich versuche gerade mir selber für mein CMS BB-Codes zu basteln. Habe mir für Code und Quote folgendes:
Code:
      // matches [quote]Quotation[/quote]
      $match[]   = '#\[quote\](.*?)\[\/quote\]#im';
      $replace[]   = '<p class="QuoteTitle">[size="1"][b]Zitat:[/b][/size]</p><p class="QuoteText">\\1</p>';
Funktioniert soweit ganz gut, aber obwohl ich den Modifier m gesetzt habe funktioniert es bei mehrzeiligen Texten nicht mehr.

Gibt es dafür eine plausible Erklärung?

Ich habe in den Source von phpBB schon herum gegraben, allerdings ist das verwerflich, weil dort in jeder Zeile dazu neue Variablen und Funktionen drin stehen und da durchzusteigen ist nicht einfach. ;)
Und außerdem habe ich dort keinen Sinn gefunden, weil nicht das getan wird, was ich will, sondern das ganze viel komplizierter, als nötig. ;)

Chris

d3g 31. Mai 2004 17:35

Re: [PHP] PCRE's und Multiline
 
Zitat:

Zitat von Chakotay1308
Funktioniert soweit ganz gut, aber obwohl ich den Modifier m gesetzt habe funktioniert es bei mehrzeiligen Texten nicht mehr.

Gibt es dafür eine plausible Erklärung?

Ja, der m-Modifier ist für was anderes gedacht.

Zitat:

Zitat von http://www.php.net/manual/en/pcre.pattern.modifiers.php
When this modifier is set, the "start of line" and "end of line" constructs match immediately following or immediately before any newline in the subject string, respectively, as well as at the very start and end. This is equivalent to Perl's /m modifier. If there are no "\n" characters in a subject string, or no occurrences of ^ or $ in a pattern, setting this modifier has no effect.

Probiers mal mit
Code:
$match[] = '#\[quote\]((.|\n)*?)\[\/quote\]#i';
[EDIT]Mir fällt nur gerade auf: Willst du nicht ohnehin vorher noch alle \n durch
ersetzen? Dann ergibt sich das Problem nämlich gar nicht.[/EDIT]

CalganX 31. Mai 2004 17:39

Re: [PHP] PCRE's und Multiline
 
Hi d3g,
http://home.pages.at/himitsu/S01/1BD.gif Danke, das funktioniert wunderbar. ;)

Chris

[edit]:gruebel: Ist eigentlich sogar... Ich guck nochmal, aber trotzdem danke. Auf jedenfall funktioniert es jetzt.[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz