#1 před rokem

anubite
Člen
Registrovaný: 17. 3. 2010
Příspěvky: 2

Negace bloku textu

Potřeboval bych poradit s následující věci, už si opravdu nevím rady.

Mám následující řetězec, který potřebuju naformátovat:

<?php
$s = "<!-- if: podminka -->Tato podmínka<strong> platí</strong> poprvé!<!-- endif: podminka -->
<!-- if: podminka -->Tato podmínka<strong> platí</strong> podruhé!<!-- endif: podminka -->
";
?>

Pokud použiji kód:

<?php
preg_match("/<!-- if: (\w*) -->(.*)<!-- endif: \\1 -->/",$s,$matches);
?>

Matches je celkem logicky:

<?php
Array
(
    [0] => <!-- if: podminka -->Tato podmínka<strong> platí</strong> poprvé!<!-- endif: podminka --><!-- if: podminka -->Tato podmínka<strong> platí</strong> podruhé!.<!-- endif: podminka -->
    [1] => podminka
    [2] => Tato podmínka<strong> platí</strong> poprvé!<!-- endif: jedna --><!-- if: jedna -->Tato podmínka<strong> platí</strong> podruhé!
)
?>

Já, ale potřebuji kód, který každou podmínku zformátuje zvlášť. Tak mě napadlo negovat ''<!-- if: ", ale nevím jak negovat blok textu.

Jinými slovy aby matches byl:

<?php
Array
(
    [0] => <!-- if: podminka -->Tato podmínka<strong> platí</strong> poprvé!<!-- endif: podminka -->
    [1] => podminka
    [2] => Tato podmínka<strong> platí</strong> poprvé!
)
?>

a podruhé:

<?php
Array
(
    [0] => <!-- if: podminka -->Tato podmínka<strong> platí</strong> podruhé!<!-- endif: podminka -->
    [1] => podminka
    [2] => Tato podmínka<strong> platí</strong> podruhé!
)
?>

Děkuju moc za vaši pomoc :)

Editoval anubite (17. 3. 2010 20:27)

 

#2 před rokem

paranoiq
Člen
Registrovaný: 14. 11. 2006
Příspěvky: 350

Re: Negace bloku textu

nechápu co myslíš tou negací

tuším, že to co potřebuješ je preg_match_all() a ungreedy matching – modifikátor „U“

preg_match_all("/<!-- if: (\w*) -->(.*)<!-- endif: \\1 -->/U", $s, $matches);

 

#3 před rokem

anubite
Člen
Registrovaný: 17. 3. 2010
Příspěvky: 2

Re: Negace bloku textu

Řešili jsem to moc složitě. Právě jsem našel info o ungreedy modifikátoru. Takhle to funguje.
Díky

Editoval anubite (17. 3. 2010 21:56)

 

Zápatí