Autor Zpráva
johnl
Profil
Zdravím,
pokouším se nahradit něco takového:
$[foreach!$pole;$klic;$hodnota]
//echo ...
      $[foreach!$pole;$klic;$hodnota]
      //echo ...
      [/foreach]
[/foreach]

Tak, aby vzniklo toto:

foreach($pole as $klic => $hodnota)
{
//echo ...
    foreach($pole as $klic => $hodnota)
    {
    //echo ...   
    }
}
Regulární výraz jsem splácal zhruba takto: /[$]\[foreach\![$](.*?)\;[$](.*?)\;[$](.*?)\](.*?)\[\/foreach\]/is => foreach($$1 as $$2 => $$3){ $4 }

Bohužel, výsledek vyleze asi takovýto:
foreach($pole as $klic => $hodnota){
//echo ...
     $[foreach!$pole;$klic;$hodnota]
     //echo ...
     }
 [/foreach]

Samozřejmě, pokud nejsou dva foreach zanořené do sebe, tak to funguje, když ale zanořím dva (a více) do sebe tak už to nefunguje protože se nahradí to co se najde první.. :/

Jedno řešení mě napadlo rozlišovat foreach takto: [foreach1][foreach2][/foreach2][/foreach1] to mi ale nepřijde jako ideální řešení, nevěděl by někdo jak se s tím poprat?
Alphard
Profil
Zkoušel jste u toho reguláru parametr U? Nejsem si teď ale jist, jestli pak nevezme jenom ten zanořený.
johnl
Profil
Alphard:
Já jsem nikdy s reg. výrazy moc nepracoval až nyní, takže tomu moc nerozumím. Kam mám ten parametr dát, nebo jak ho tam dát? Díky za trpělivost.. :))
Alphard
Profil
[#3] johnl
Nějaké parametry tam už máte, viz /is. Ve FAQ si najděte část s regulárními výrazy a tam je odkaz na popis modifikátorů. Nebudu odkazovat konkrétně, začátečníka by mohlo zajímat vše.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: