2016-05-20 2 views
1

У меня есть строка, такая как string(8234) "<style>.{ margin-bottom:10px; float:left; display: inline-block; width:56%; text-align:left; padding-right:20px; padding-left:20px; } . > p { display: table-cell; height: 150px; vertical-align: middle; }..................</style>................. Я хочу удалить тег <style> и все его содержимое. Я попыталсяИмя тега PHP- Preg_replace и его содержимое

$description = $product_info['description']; // the string with style tag 
$text = preg_replace('/<\s*style.+?<\s*\/\s*style.*?>/si', ' ', $description); 
echo $text; 

но он показывает ту же строку без удаления <style> тега. Я также попытался заменить только <style> тег, делая

$text = str_replace("<style>", "", $description); 

, но это также не работает. Я снова и снова вижу одну и ту же строку. Я также пробовал с DOMParser

$doc = new DOMDocument(); 
$doc->loadHTML($description); 
$xpath = new DOMXPath($doc); 
foreach ($xpath->query('//style') as $node) { 
    $node->parentNode->removeChild($node); 
} 
$text = $doc->saveHTML(); 

, но во всех случаях, выход же с <style> и его содержание

+0

сделать var_dump ($ description) перед preg_replace, потому что ваш код кажется прекрасным; – splash58

+0

оба 'var_dump()' такие же, – baig772

+0

, если вы берете строку со страницы, отображаемой php, вы можете не видеть, что ваша строка '< сценарий >' потому что, вероятно, он сохраняется в БД в такой форме – splash58

ответ

0

Ваш регулярных выражений does work, но я мог бы предложить simpler pattern, используя нежадным quantifers:

<style>.*?<\/style> 
+0

Я вижу эту ошибку, не могли бы вы написать полную строку? Неизвестный модификатор. ' – baig772

+0

проверьте ссылки IDEone. Один - ваш, один - более простой образец. – sweaver2112

+0

Неизвестный модификатор может указывать на неэкранированные разделители шаблонов ('/') должен быть ('\ /')? см. http://stackoverflow.com/a/5589826/244811 – sweaver2112

Смежные вопросы