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 :: regex для удаления html tag по его id

 PHP.SU

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


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

> Описание: regex для удаления html tag по его id
skolozhabskiy
Отправлено: 14 Июня, 2012 - 22:08:33
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2012  


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




добрый вечер,

у меня проблема с регулярным выражением.

я использую tpl. по ходу выполнения скрипта мне нужно скрывать куски кода.
мне нужно по коду удалить html tag (div или span или p и так далее) со специфическим идентификатором id или классом.

например, нужно удалить блок div с id="product_sort_wrap"

пробовал так:

PHP:
скопировать код в буфер обмена
  1.   $show_data = '
  2.                <div id="product_sort_wrap" style="display:block; text-align:center; width:100%;">
  3.                  <p id="product_sort">Сортировать по: бренду (<a href="?sort=brand&direction=ASC">возр</a> | <a href="?sort=brand&direction=DESC">убыв</a>),
  4.                                                     наименованию (<a href="?sort=name&direction=ASC">возр</a> | <a href="?sort=name&direction=DESC">убыв</a>),
  5.                                                             цене (<a href="?sort=fixedPrice&direction=ASC">возр</a> | <a href="?sort=fixedPrice&direction=DESC">убыв</a>),
  6.                                                         рейтингу (<a href="?sort=opinion&direction=ASC">возр</a> | <a href="?sort=opinion&direction=DESC">убыв</a>)
  7.                  </p>
  8.                </div>
  9.  
  10.  $pattern = "/<p[id='cat_product_sort']*><\\/p[id='cat_product_sort']*>/";
  11.  preg_replace($pattern, '', $show_data);    
  12.  echo $show_data;

к сожалению выражение :

PHP:
скопировать код в буфер обмена
  1. <div[id='product_sort_wrap]*><\\/div[id='product_sort_wrap']*>

не работает.

спасибо за помощь

(Отредактировано автором: 14 Июня, 2012 - 22:15:35)

 
 Top
Alho
Отправлено: 14 Июня, 2012 - 22:16:15
Post Id



Посетитель


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. <div id="product_sort_wrap"[\s\S]*?<\/div>


PS Регулярку я конечно составил, но вот сама реализация... Это не самач лучшая идея, подумайте еще.

(Отредактировано автором: 14 Июня, 2012 - 22:20:42)

 
 Top
skolozhabskiy
Отправлено: 14 Июня, 2012 - 22:19:31
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2012  


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




так не работает:

PHP:
скопировать код в буфер обмена
  1. $pattern = '<div id="product_sort_wrap"[\s\S]*?<\/div>';
  2.   preg_replace($pattern, '', $show_data);                              
  3.   echo $show_data;


пишет ошибку:

Warning: preg_replace(): Unknown modifier '<' in ......\_testing2.php on line 34

что-то не так?

спасибо за ответ
(Добавление)
Alho

а какая лучшая, если нужно скрыть не используемые html тэги при выводе шаблона. нужна реализация без java и jquery. и что неверно в вашем регулярном выражении? спасибо

(Отредактировано автором: 14 Июня, 2012 - 22:32:44)

 
 Top
Alho
Отправлено: 14 Июня, 2012 - 22:36:28
Post Id



Посетитель


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


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




Cтоит добавить разделители:
PHP:
скопировать код в буфер обмена
  1. $pattern = '/<div id="product_sort_wrap"[\s\S]*?<\/div>/';


Плюс внимательнее читаем о preg_replace - он не изменяет текущий массив, а возвращает новый.

PHP:
скопировать код в буфер обмена
  1. $show_data=preg_replace($pattern, '', $show_data);                              
  2.   echo $show_data;

(Добавление)
Лучше... Ну все завит от того, как у вас реализовано шаблонирование. Всегда лучше добавить блок для вывода, нежели шерстить весь шаблон, и удалять кусок.
 
 Top
skolozhabskiy
Отправлено: 14 Июня, 2012 - 22:43:24
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2012  


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




спасибо за ответ, ошибок теперь нет, но кусок кода не удаляется при тестировании. что надо изменить? мне нужно скрыть весь блок div с id="product_sort_wrap" со всем его содержимым. спасибо

(Отредактировано автором: 14 Июня, 2012 - 22:45:07)

 
 Top
Alho
Отправлено: 14 Июня, 2012 - 22:49:52
Post Id



Посетитель


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


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




Умвр, чяднт?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $show_data='апеммммммммммммм<div id="product_sort_wrap" style="display:block; text-align:center; width:100%;">
  3.                 <p id="product_sort">Сортировать по: бренду (<a href="?sort=brand&direction=ASC">возр</a> | <a href="?sort=brand&direction=DESC">убыв</a>),
  4.                                                    наименованию (<a href="?sort=name&direction=ASC">возр</a> | <a href="?sort=name&direction=DESC">убыв</a>),
  5.                                                            цене (<a href="?sort=fixedPrice&direction=ASC">возр</a> | <a href="?sort=fixedPrice&direction=DESC">убыв</a>),
  6.                                                        рейтингу (<a href="?sort=opinion&direction=ASC">возр</a> | <a href="?sort=opinion&direction=DESC">убыв</a>)
  7.                 </p>
  8.               </div>еапппппппппппппппппппппппппппппппп';
  9. $pattern = '/<div id="product_sort_wrap"[\s\S]*?<\/div>/';
  10.   $a=preg_replace($pattern, '', $show_data);                              
  11.   echo $a;
  12. ?>
 
 Top
skolozhabskiy
Отправлено: 15 Июня, 2012 - 01:44:58
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2012  


Помог: 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