Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Помогите с регулярным выражением


Автор: Megas 28.5.2006, 16:43
Вообщем есть текст в котором некоторые места выглядят так:

{if:var}тут любой текст/данные{endif}

Вообщем нужно функцией preg_match_all получить var и текст который находится в середине.

Вроде такое простое дело, а чтото у меня самого никак не получается smile 

Автор: Mal Hack 28.5.2006, 16:51
Модератор: Название темы должно отражать ее суть! В следующий раз закрываю тему и вешаю кирпич.

Модератор: Тут не пишут скрипты за вас, а лишь помогают. Я что-то не вижу ваших попыток. Опять же, в следующий раз тема будет закрыта

Код
preg_match( "#\{if:[A-Z]+\}(.+?){endif}#is" , $str , $matches );
 

Автор: Acraft 2.6.2006, 16:22
А я бы строковые ф-ии использовал.
Код

$f_arr=file('file_name.txt');
for ($i=0; $i<sizeof($f_arr); $i++)
    {
      if (strpos("_".$f_arr[$i],"{")>0)
      $tmp1[sizeof($tmp1)]=substr($f_arr[$i],strpos($f_arr[$i],"var"),3);
      $tmp2[sizeof($tmp2)]=substr($f_arr[$i],strpos($f_arr[$i],"}"),strrpos($f_arr[$i],"{"));
    }

 

Автор: Mal Hack 2.6.2006, 23:37
В данном случае, это все-таки не рационально. 

Автор: Azazel 7.6.2006, 12:24
Код

preg_match( "/{(\w+):\w}(.+?){end\\1}/is" , $str , $matches );


более универсально... 

Автор: Mal Hack 7.6.2006, 23:40
\w содержит и знаки препинания, что не есть хорошо. 

Автор: vasac 8.6.2006, 09:47
Цитата(Mal Hack @  7.6.2006,  23:40 Найти цитируемый пост)
\w содержит и знаки препинания, что не есть хорошо.  

Пардон, какие знаки препинания?
Цитата

\w - любой алфавитно-цифровой символ.

Алфавитно-цифровой символ — буква, цифра или знак подчеркивания. Под буквой подразумевается латинская буква и локальные буквенные символы (в зависимости от установленной локали). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)