Вы не зашли.
Главная » PHP » Проблема с регулярным выражением
#1. Morgan Off (10)
Участник
2010.08.03 20:08
Код:
span style="color: #0000BB"><?php$content = '{if $a}{if $b}{/if}{/if}';preg_match_all('~\{if (\!)?(\~)?\$((.*)(\.(.*))?)( (.*) ([0-9]+|\$((.*)(\.(.*))?)))?\}(?:\r\n|\n)?(.*)(?:\r\n|\n)?\{\/if\}~uUs', $content, $ifs);print_r($ifs);?>
выдает одно найденное значение с содержимым ($ifs[0][0])
Код:
{if $a}
{if $b}
 
{/if}
хотя должно быть два найденных значения, типа
Код:
$ifs[0][0] =>
{if $b}
 
{/if}
$ifs[1][0] => {if $a}
 
{/if}
уже замучался я с это регуляркой  neutral , прошу помощи
Отредактировано Morgan (2010.08.03 20:08)
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#2. Morgan Off (10)
Участник
2010.08.03 21:09
решил пока таким способом
Код:
span style="color: #0000BB"><?phppreg_match_all('~\{if (\!)?(\~)?\$((.*)(\.(.*))?)( (.*) ([0-9]+|\$((.*)(\.(.*))?)))?\}(?:\r\n|\n)?(.*)(?:\r\n|\n)?\{\/if\}~uUs', $template_content, $ifs, PREG_SET_ORDER);?>
но все таки, регулярка может составлена не совсем точно?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#3. Morgan Off (10)
Участник
2010.08.03 22:10
пробовал сделать так
Код:
span style="color: #0000BB"><?php$content = '{if $a}{if $b}{/if $b}{/if $a}';preg_match_all('~\{if ((\!)?(\~)?\$((.*)(\.(.*))?)( (.*) ([0-9]+|\$((.*)(\.(.*))?)))?)\}(?:\r\n|\n)?(.*)(?:\r\n|\n)?\{\/if \\1\}~uUs', $content, $ifs);print_r($ifs);?>
===>>>
Код:
Array
(
[0] => Array
(
[0] => {if $a}
{if $b}
 
{/if $b}
 
{/if $a}
)
 
[1] => Array
(
[0] => $a
)
 
[2] => Array
(
[0] =>
)
 
[3] => Array
(
[0] =>
)
 
[4] => Array
(
[0] => a
)
 
[5] => Array
(
[0] => a
)
 
[6] => Array
(
[0] =>
)
 
[7] => Array
(
[0] =>
)
 
[8] => Array
(
[0] =>
)
 
[9] => Array
(
[0] =>
)
 
[10] => Array
(
[0] =>
)
 
[11] => Array
(
[0] =>
)
 
[12] => Array
(
[0] =>
)
 
[13] => Array
(
[0] =>
)
 
[14] => Array
(
[0] =>
)
 
[15] => Array
(
[0] =>
{if $b}
 
{/if $b}
 
)
 
)
то есть, первое вхождение найдено а второе нет
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#4. Morgan Off (10)
Участник
2010.08.04 00:12
решено с помощью создания функции для рекурсивного прохода по всем таким вложенностям.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#5. Gemorroj Off (107)
Administrator
2010.08.04 10:10
smile)
разбирая такую регулярку можно мозг сломать)
#6. Morgan Off (10)
Участник
2010.08.06 22:10
вам это ~21 числа разбирать предстоит smile
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#7. Gemorroj Off (107)
Administrator
2010.08.07 11:11
удачи в конкурсе wink
#8. Morgan Off (10)
Участник
2010.08.07 15:03
спасибо
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.014 s