Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужна помощь в составлении выражения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SkaN
Отправлено: 05 Сентября, 2011 - 14:33:45
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Нужно выражение, которое ищет в переменной код {array=`$somename$`}*{/array=`$somename$`} (взамен звездочки люобй символ, в том числе и никакой). Но искать он должен с условием, что только до первой закрывающей конструкции, дальше игнорировать. Вот я составил такое выражение:
PHP:
скопировать код в буфер обмена
  1. '/\{array=`([0-9A-Za-z_]+)`\}([^(\{array=`\1`\})]*)\{\/array=`\1`\}/s'

поидее этот код должен искать такие конструкции, но следить, чтобы во второй подмаске не было {array=`$somename$`}, но в итоге под этот шаблон не попадает ничего. К тому же, у меня неправильно сделана вторая подмаска. В связи с этим есть вопрос: как обозначить определенный порядок внутри символьного класса? Зараннее спасибо
(Добавление)
вот, небольшое пояснение:
у меня есть код:
CODE (html):
скопировать код в буфер обмена
  1. <meta name="keywords" content="{array=`all_tags_array`},{name}{/array=`all_tags_array`}">
  2. </head>
  3. <body>
  4. {array=`all_tags_array`}<span style="font-size: {font_size}"><a href="?id=tag&tag={id}">{name}</a>({num_articles})</span><br>{/array=`all_tags_array`}

все ненужное вырезано.
Под шаблон '/{case=`([0-9A-Za-z_]+)(==|!=|<=|>=|<|>|\|isset\|)([0-9A-Za-z_]+)`}(.*){\/case=`\1\2\3`}/s' попадает
CODE (html):
скопировать код в буфер обмена
  1. {array=`all_tags_array`},{name}{/array=`all_tags_array`}">
  2. </head>
  3. <body>
  4. {array=`all_tags_array`}<span style="font-size: {font_size}"><a href="?id=tag&tag={id}">{name}</a>({num_articles})</span><br>{/array=`all_tags_array`}

, но не {array=`all_tags_array`},{name}{/array=`all_tags_array`} и не {array=`all_tags_array`}<span style="font-size: {font_size}"><a href="?id=tag&tag={id}">{name}</a>({num_articles})</span><br>{/array=`all_tags_array`} , а хотелось бы, чтобы было наоборот... Если убрать первое вхождение, кстати, то все нормально интерпретируется
 
 Top
f111
Отправлено: 05 Сентября, 2011 - 16:25:50
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




исходные текст:
CODE (htmlphp):
скопировать код в буфер обмена
  1.     <meta name="keywords" content="{array=`all_tags_array`},{name}{/array=`all_tags_array`}">
  2.     </head>
  3.     <body>
  4.     {array=`all_tags_array`}<span style="font-size: {font_size}"><a href="?id=tag&tag={id}">{name}</a>({num_articles})</span><br>{/array=`all_tags_array`}
  5. {array=`all_tags_array`}1{array=`all_tags_array`}2{/array=`all_tags_array`}

РВ.
CODE (htmlphp):
скопировать код в буфер обмена
  1. |\{array=`\w+`\}(?:(?!\{/?array).)*{/array=`\w+`}|

совпадения:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Всего совпадений 3
  2.  
  3. 1 : {array=`all_tags_array`},{name}{/array=`all_tags_array`}
  4. 2 : {array=`all_tags_array`}<span style="font-size: {font_size}"><a href="?id=tag&tag={id}">{name}</a>({num_articles})</span><br>{/array=`all_tags_array`}
  5. 3 : {array=`all_tags_array`}2{/array=`all_tags_array`}
 
 Top
SkaN
Отправлено: 05 Сентября, 2011 - 17:13:21
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




спасибо, заработало исправно)
 
 Top
f111
Отправлено: 05 Сентября, 2011 - 18:22:07
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




должно было заработать неисправно? Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB