在我的评论栏中,人们会变得棘手,他们正在使用样式来修复评论框旁边的图像。例如:
Hellow how are you? <br>
<img src="http://example.com/image/gifts/19.png" style="position: absolute; left: 150px; top: 150px;">
所以我想删除这些额外的代码。我正在尝试preg_replace
和str_replace
,但我没有得到任何地方。
我想要它:
Hellow how are you? <br>
<img src="http://example.com/image/gifts/19.png">
我想从中删除此样式部分。
我试试这个它也可以,但是如果我继续用大写和小写写的话会很长
PHP:
function unwant($text)
{
$unwant = array(
'style' => '',
'Style' => '',
'STYle' => '',
'STYLe' => '',
'STYLE' => ''
);
return str_replace(array_keys($unwant), array_values($unwant), $text);
}
我想删除它:style="position: absolute; left: 150px; top: 150px;"
有更好的方法吗?
2。另一件事
如果用户仅发布图片网址
http://example.com/image/gifts/19.png
我想用
替换它<img src="http://example.com/image/gifts/19.png">
答案 0 :(得分:1)
对于第1点,你可以使用str_replace或preg_match等删除东西,或者你可以解析DOM并以那种方式处理节点
<?php
$doc = new DOMDocument();
$doc->loadHTML($html);
$images = $doc->getElementsByTagName('img');
foreach ($images as $image) {
$image->removeAttributeNode('style');
}
$cleanHtml = $doc->saveHtml();
但是,为了安全起见,我会调查使用BBCode或Markdown作为评论,然后在代码中转换为HTML。这可以让您更好地控制您网站上的输出,同时仍然允许评论者自由地格式化他们的帖子
答案 1 :(得分:0)
使用经过验证且经过测试的 HTML白名单库,例如HTML Purifier。正则表达式不适合解析和修改HTML。