-1

在我的评论框中,人们会变得很棘手,他们正在使用样式来修复评论框之外的图像。例如:

Hellow how are you? <br>
<img src="http://example.com/image/gifts/19.png" style="position: absolute; left: 150px; top: 150px;">

所以我想删除这个额外的代码。我正在尝试,preg_replacestr_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. 还有一件事

如果用户只发布图片 URL

http://example.com/image/gifts/19.png

我希望它替换为

<img src="http://example.com/image/gifts/19.png">
4

2 回答 2

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。这可以让您更好地控制网站上的输出内容,同时仍然允许评论者在格式化他们的帖子时有一些自由

于 2013-05-20T15:03:11.900 回答
0

使用经过验证和测试的HTML 白名单库,例如HTML Purifier。正则表达式不适合解析和修改 HTML。

于 2013-05-20T15:13:50.763 回答