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. cvet - 01 Декабря, 2009 - 15:23:51 - перейти к сообщению
Имеется текст примерно такого вида
PHP:
скопировать код в буфер обмена
  1. $str="<!-- bloc1--><span>blablabla
  2. <span>blablabla1</span>
  3. <span>blablabla2</span>
  4. </span>blablabla3<!-- bloc2 -->";
  5.  
  6. $str=preg_replace(array("@<!-- bloc1 --><span>@","@</span>.*<!-- bloc2 -->@"), "", $str);
  7.  


В результате хотелось бы получить
CODE (text):
скопировать код в буфер обмена
  1. <span>blablabla1</span>
  2. <span>blablabla2</span>
, однако получается

Понимаю что регулярка начинает поиск с начала а не с конца, однако как можно получить желаемый результат?
2. trot - 01 Декабря, 2009 - 21:48:39 - перейти к сообщению
Постановка задачи не достаточна четкая.

Если относиться буквально к тому,что у вас вызвало затруднение, то
можете использовать следующий вариант

CODE (text):
скопировать код в буфер обмена
  1. $str=preg_replace("@<!-- bloc1--><span>.*?(<span>.*)</span>.*<!-- bloc2 -->@s", "\\1", $str);


Этот вариант применим только для предложенному тексту и требуемому результату.
Для составления более гибкого и эффективного шаблона попытайтесь изложить требования к результату и требования к исходному тексту, который вы мачите.

 

Powered by ExBB FM 1.0 RC1