• Главная
  • » PHP
  • » Проблема с регулярным выражением

#1 2010.08.03 20:29

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Проблема с регулярным выражением

Код:

1
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])

Код:

1
2
3
4
{if $a}
{if $b}
 
{/if}

хотя должно быть два найденных значения, типа

Код:

1
2
3
4
5
6
7
$ifs[0][0] =>
{if $b}
 
{/if}
$ifs[1][0] => {if $a}
 
{/if}

уже замучался я с это регуляркой  neutral , прошу помощи

Отредактировано Morgan (2010.08.03 20:29)


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#2 2010.08.03 21:02

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Проблема с регулярным выражением

решил пока таким способом

Код:

1
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 2010.08.03 22:15

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Проблема с регулярным выражением

пробовал сделать так

Код:

1
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);?>

===>>>

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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 2010.08.04 00:01

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Проблема с регулярным выражением

решено с помощью создания функции для рекурсивного прохода по всем таким вложенностям.


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#5 2010.08.04 10:21

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6594
Карма: 107
Профиль Веб-сайт

Re: Проблема с регулярным выражением

smile)
разбирая такую регулярку можно мозг сломать)

Неактивен

#6 2010.08.06 22:56

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Проблема с регулярным выражением

вам это ~21 числа разбирать предстоит smile


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#7 2010.08.07 11:54

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6594
Карма: 107
Профиль Веб-сайт

Re: Проблема с регулярным выражением

удачи в конкурсе wink

Неактивен

#8 2010.08.07 15:23

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Проблема с регулярным выражением

спасибо


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

  • Главная
  • » PHP
  • » Проблема с регулярным выражением

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.014 s