Preg_replace图像内部样式

时间:2011-10-05 20:33:33

标签: php preg-replace

  

可能重复:
  Best methods to parse HTML with PHP

对于一个网站,我有字符串而不知道它们中会包含哪些文本或图像行。 我想创建一个图像内部样式的替代品。必须删除整个style="" 不知道""之间的样式。

我需要替换的模式是什么。

3 个答案:

答案 0 :(得分:0)

为此使用正则表达式是一个坏主意,因为HTML解析器将更加健壮。如果样式属性总是相似,只有很小的变化,那么您可以使用以下内容进行更改:

$yourStyle = 'style="your-style-goes-here"';
$newString = preg_replace('%style="(.*?)"%is', $yourStyle, $string);

如果您只想完全删除样式属性,请设置$yourStyle = '';

同样,这不是最好的方法,但假设您在样式的中间没有引号并且样式属性以引号结尾,它将起作用。

答案 1 :(得分:0)

这样的事情应该会有所帮助:

$data = array(
    '<img src="hello/test.png" />',
    '<img src="hello/test.png"/>',
    '<img src="hello/test.png">',
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black" border="0" />',
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black" border="0"/>',
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black" border="0">',
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black" />',
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black"/>',
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black">',
    '<img style="blabla; background-color: #98473; border: 1px solid black" src="mama" />',
    '<img style="blabla; background-color: #98473; border: 1px solid black" src="mama"/>',
    '<img style="blabla; background-color: #98473; border: 1px solid black" src="mama">',
);
foreach($data as $texttosearch){
    echo htmlentities($texttosearch).' => '.htmlentities(preg_replace('/(<img .*?)(style=("|\').*?("|\'))(.*?(\/?)>)/i', '$1$5', $texttosearch)).'<br />';
}

答案 2 :(得分:0)

这应该有所帮助:

/(?:style=")(?:[\w\-\:\;\s\%\#]+)(?:\")/i

它将从任何标记中删除大多数样式属性。您可以将其放在一个功能中并将其输入您要检查/替换的部件