Вы не зашли.
#1.
Morgan
Off
(10)
Участник
2010.08.03 16:04
Код:
| 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])
хотя должно быть два найденных значения, типа
Код:
| $ifs[0][0] => |
| {if $b} |
| |
| {/if} |
| $ifs[1][0] => {if $a} |
| |
| {/if} |
уже замучался я с это регуляркой

, прошу помощи
Отредактировано Morgan (2010.08.03 16:04)
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#2.
Morgan
Off
(10)
Участник
2010.08.03 17:05
решил пока таким способом
Код:
| 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 18:06
пробовал сделать так
Код:
| 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.03 20:08
решено с помощью создания функции для рекурсивного прохода по всем таким вложенностям.
Натан ротшильд :
Кто владеет информацией, тот владеет миром

)
разбирая такую регулярку можно мозг сломать)
#6.
Morgan
Off
(10)
Участник
2010.08.06 18:06
вам это ~21 числа разбирать предстоит
Натан ротшильд :
Кто владеет информацией, тот владеет миром
удачи в конкурсе
#8.
Morgan
Off
(10)
Участник
2010.08.07 11:11
спасибо
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Страниц: 1