可能重复:
用PHP 解析HTML的最佳方法
对于一个网站,我有字符串,但不知道其中会有什么文本或图像行。我想创建一个图像内部样式的替代品。必须移除整个style=""
而不知道CCD_ 2之间将是什么风格。
我需要的替换模式是什么。
使用正则表达式是个坏主意,因为HTML解析器会更加健壮。如果样式属性总是相似的,只有微小的变化,那么您可以使用以下方法来更改它:
$yourStyle = 'style="your-style-goes-here"';
$newString = preg_replace('%style="(.*?)"%is', $yourStyle, $string);
如果您只想完全删除样式属性,则设置$yourStyle = '';
同样,这不是实现这一点的最佳方法,但假设样式中间从未有引号,并且样式属性以引号结尾,则这一方法会起作用。
这样的东西应该会有所帮助:
$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 />';
}
这应该会有所帮助:
/(?:style=")(?:['w'-':';'s'%'#]+)(?:'")/i
它将从任何标签中剥离大多数样式属性。您可以将其放置在一个函数中,并向其提供要检查/替换的部件