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
Форумы портала PHP.SU :: Версия для печати :: Нужна помощь в составлении выражения
Форумы портала PHP.SU » PHP » Регулярные выражения » Нужна помощь в составлении выражения

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

1. SkaN - 05 Сентября, 2011 - 14:33:45 - перейти к сообщению
Нужно выражение, которое ищет в переменной код {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`} , а хотелось бы, чтобы было наоборот... Если убрать первое вхождение, кстати, то все нормально интерпретируется
2. f111 - 05 Сентября, 2011 - 16:25:50 - перейти к сообщению
исходные текст:
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`}
3. SkaN - 05 Сентября, 2011 - 17:13:21 - перейти к сообщению
спасибо, заработало исправно)
4. f111 - 05 Сентября, 2011 - 18:22:07 - перейти к сообщению
должно было заработать неисправно? Радость

 

Powered by ExBB FM 1.0 RC1