2013-11-16 2 views
0

Я работаю над добавлением значений в шаблон и проблемы.PHP: вопрос о том, как работает preg_match

Вот мой шаблон

TIME : |time,hour|:|time,min|:|time,sec| <br /> 
ADDING BLOCK 'TIME' ...<br /> 
<i>|template,tibcoreapps,main|</i><br /> 

Символы | используется для разделяющей блоков данных. Когда я попытался получить блок |template,tibcoreapps,main| используя preg_match, он не работает с моим кодом:

preg_match("/(.*)|template,tibcoreapps,(.*)|(.*)/",$templateContent,$result); 

var_dump($result); 

И результат

array (size=2) 
0 => string 'TIME : |time,hour|:|time,min|:|time,sec| <br /> (length=48) 
1 => string 'TIME : |time,hour|:|time,min|:|time,sec| <br /> (length=48) 

Я пытался искать по всему интернету, но не может получить как именно preg_match работает. Раньше я думал, что он получает все согласованные строки, если я назначу $result (третий параметр). Но даже когда я пытаюсь получить блок, который начинается с template,tibcoreapps,, он возвращает другие блоки или первые блоки, которые он получает. Пожалуйста, объясните мне, как работает preg_match.

Благодарим за помощь.

+0

Это документация: http://php.net/preg_match The | имеет особое значение ... Это может вызвать проблемы ... –

+0

Огромное вам спасибо – SmileLuu

ответ

1

С | имеет особое значение в регулярных выражениях, вам необходимо избегать его.

preg_match("/(.*)\|template,tibcoreapps,(.*)\|(.*)/",$templateContent,$result); 

Если вы не знакомы с регулярными выражениями, вы должны прочитать учебник по regular-expressions.info.

+0

Большое вам спасибо. Но когда я добавляю еще один подобный блок, как раньше, остается только один результат. Мой шаблон теперь 'TIME: | время, час |: | время, мин |: | время, сек |
ADDING BLOCK 'TIME' ...
| шаблон, tibcoreapps, main |
| шаблон, tibcoreapps, индекс |
'. И результат по-прежнему остается 'array (size = 4) 0 => string ' | template, tibcoreapps, main |
'(длина = 41) 1 => строка' '(длина = 3) 2 => строка 'главной'(длина = 4) 3 => строка'
'(длина = 11) ' – SmileLuu

Смежные вопросы