对于一个网站,我有字符串而不知道它们中会包含哪些文本或图像行。
我想创建一个图像内部样式的替代品。必须删除整个style=""
不知道""
之间的样式。
我需要替换的模式是什么。
答案 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
它将从任何标记中删除大多数样式属性。您可以将其放在一个功能中并将其输入您要检查/替换的部件