[php] pattern syntax

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tjeemp
  • Registratie: Januari 2005
  • Laatst online: 03-01-2015

Tjeemp

BEER N TEA

Topicstarter
ik ben bezig met een soort template-achtig ding, maar nu heb ik een preg_replace nodig die over meerdere regels leest. en aangezien mijn kennis over de pattern syntaxes niet echt toereikend zijn en ik niet snap wat ze nou bedoelen op php.net welke volgorde, en precieze syntax. hoop ik dat men hier een antwoord weet.

ik heb dus in een apart file:

code:
1
2
3
4
5
6
7
[module]
<table>
  <tr>
    <td></td>
  </tr>
</table>
[/module]


met een preg_replace pik ik dus alles binnen de [module][/module] tags uit... als ik het achter elkaar zet werkt het wel, maar nu nog zoals je normaal html hebt.

bij voorbaat dank

www.timovanderzanden.nl | Beer 'n' Tea


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ik denk dat je opzoek bent naar de DOTALL (s) of de MULTILINE (m) modifier. Je doet er goed aan eens naar deze pagina te kijken. Mischien kun je eens aangeven hoever je zelf bent gekomen met een regex?

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Tjeemp
  • Registratie: Januari 2005
  • Laatst online: 03-01-2015

Tjeemp

BEER N TEA

Topicstarter
code:
1
/\[module=(.*?)\](.*?)\\[\/module\]/e

is het pattern dat ik zelf had voordat ik begon te sleutelen met multiline mode

ik heb namelijk geen idee waar ik de /m modifier moet plaatsen en hoe ik hem uberhaupt meerdere lines kan laten lezen

misschien is de /s modifier beter om te gebruiken in mijn geval omdat niet vaststaat hoeveel newlines er zijn. of zie ik dit nu volledig verkeerd?

EDIT: woohoo, bedankt, het werkt wel met de /s modifier

[ Voor 7% gewijzigd door Tjeemp op 23-01-2006 18:25 ]

www.timovanderzanden.nl | Beer 'n' Tea


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Je hebt dotall nodig, omdat hij standaard geen newline chars meerekent. Dit werkt namelijk wel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

$template = "[module]
<table>
  <tr>
    <td></td>
  </tr>
</table>
[/module]";

$regex = "/\\\[module\\](.+)\\\[\\/module\\]/s";
preg_match($regex, $template, $match);

var_dump($match);

?>

Noushka's Magnificent Dream | Unity