Autor Zpráva
johnl
Profil
Zdravím,
pokouším se nahradit něco takového:
1$[foreach!$pole;$klic;$hodnota]
2//echo ...
3      $[foreach!$pole;$klic;$hodnota]
4      //echo ...
5      [/foreach]
6[/foreach]
7 
8Tak, aby vzniklo toto:
9 
10foreach($pole as $klic => $hodnota)
11{
12//echo ...
13    foreach($pole as $klic => $hodnota)
14    {
15    //echo ...   
16    }
17}
$[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:
1foreach($pole as $klic => $hodnota){
2//echo ...
3     $[foreach!$pole;$klic;$hodnota]
4     //echo ...
5     }
6 [/foreach]
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.
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0