Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вырезать <STYLE type=text\/css>текст</STYLE> оставив текст
 
 автор: vadimka   (04.09.2009 в 13:37)   письмо автору
 
 

Здравствуйте!
Пытаюсь вырезать из текста
<STYLE type=text\/css> 
и
</STYLE>
не получается:) делаю так:
$text = preg_replace("#(.*)<STYLE type=([\"|\']?)text\/css([\"|\']?)>(.*)<\/STYLE>(.*)#is"," \\1\\5",$text);
echo $text;
ошибок не выдает просто выводит весь текст неочищенным.
Блин еще надо вырезать то, что между ними!
заранее благодарю!

  Ответить  
 
 автор: AcidTrash(кафе)   (04.09.2009 в 14:12)
 
   для: vadimka   (04.09.2009 в 13:37)
 

$text = preg_replace("#<style[^<]+</style>#is","",$text); 

  Ответить  
 
 автор: vadimka   (04.09.2009 в 15:50)   письмо автору
 
   для: AcidTrash(кафе)   (04.09.2009 в 14:12)
 

чето не получается, может так:
$text = preg_replace("#<style(.*)[>](.*)</style>#is","",$text);

правда тоже не работает:)

P.S. а разве не нужно экранировать
</style>
?

  Ответить  
 
 автор: heed   (04.09.2009 в 22:34)   письмо автору
 
   для: vadimka   (04.09.2009 в 15:50)
 

чтобы понять почему не заменяется , желательно делать не сразу preg_replace
, а сначала посмотреть совпадает-ли вообще с чем-нибудь выражение
, обычно делаю несколько временных строк, которые потом можно удалить или закомментировать
<?
//............................

$p '#<style[^<]+</style>#i'
echo '<pre>';
preg_match_all($p$text$out2);
print_r($out); exit; # только смотреть надо исходный код страницы

//$text = preg_replace("#<style[^<]+</style>#is","",$text); 
это выражение могло не сработать , если внутри тегов <style> была скобка "<"
, или еслив закрывающем теге был например пробел перед закрывающей скобкой

  Ответить  
 
 автор: vadimka   (07.09.2009 в 15:14)   письмо автору
 
   для: heed   (04.09.2009 в 22:34)
 

да там есть теги <br> правда как лни там оказались? при вводе действуют магические кавычки при выводе из базы их не видно. плюс style выводится так &lt;STYLE

  Ответить  
 
 автор: heed   (07.09.2009 в 17:37)   письмо автору
 
   для: vadimka   (07.09.2009 в 15:14)
 

®

  Ответить  
 
 автор: heed   (07.09.2009 в 17:57)   письмо автору
 
   для: vadimka   (07.09.2009 в 15:14)
 

>магические кавычки при выводе из базы их не видно.
при выводе и не должно быть эскапирования
, но насчёт &lt;STYLE - это похоже на результат работы htmlspecialchars()

насчёт "<" в блоке style , иногда бывает , и бывает вполне по теме

попробуйте '#<style.+?</style>#is'
но если так и должны быть &lt; &gt; , то нужно заменить ими скобки и в выражении

  Ответить  
 
 автор: vadimka   (07.09.2009 в 18:51)   письмо автору
 
   для: heed   (07.09.2009 в 17:57)
 

я сам запутался
&lt;STYLE 
это в базе, если смотреть через phphmyadmin. При выводе я текст не обрабатываю, там
<STYLE
если в регулярку вставить
'#&lt;style.+?&lt;/style&gt;#is'
- все работает, спасибо!!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования