PHP- Preg_replace标记名称及其内容

时间:2016-05-20 17:31:34

标签: php css regex preg-replace str-replace

我有一个字符串 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>标记及其所有内容。 我试过了

$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>及其内容

相同

1 个答案:

答案 0 :(得分:0)

你的正则表达式does work,但我可以使用非贪婪的量化推荐simpler pattern

<style>.*?<\/style>