无法用str_replace()替换某些html字符

时间:2017-07-09 03:13:55

标签: php str-replace htmlspecialchars

我从数据库收到以下文字:

[Alt]+[Enter]

此文本存储在名为seq<'a> -> 'a的变量中。一旦&lt;div onclick=&quot;alert('código inyectado');&quot;&gt;Texto&lt;/div&gt; [img]http://www.hobbyconsolas.com/sites/hobbyconsolas.com/public/media/image/2015/07/503196-halo-5-guardians-nuevos-datos-campana-cooperativa.jpg[/img] Y aquí una URL: [url]https://www.google.es/?gws_rd=ssl[/url] Bueno pues vamos [b]a ver si esto funciona[/b] porque &quot;todavía&quot; no lo sé [i][u]bien[/u][/i] 应用于变量,我就会经历我发现问题的地方:

$texto

但是没有修改。如果删除字符htmlspecialchars(),我该如何解决此问题?

2 个答案:

答案 0 :(得分:0)

我会说不要进行htmlspecialchars()来电,只需拨打str_replace()一次:

代码:(Demo

$texto="&lt;div onclick=&quot;alert('código inyectado');&quot;&gt;Texto&lt;/div&gt;

[img]http://www.hobbyconsolas.com/sites/hobbyconsolas.com/public/media/image/2015/07/503196-halo-5-guardians-nuevos-datos-campana-cooperativa.jpg[/img]

Y aquí una URL: [url]https://www.google.es/?gws_rd=ssl[/url]

Bueno pues vamos [b]a ver si esto funciona[/b] porque &quot;todavía&quot; no lo sé [i][u]bien[/u][/i]";
//$texto=htmlspecialchars($texto);

$texto = str_replace(["&quot;","&lt;","&gt;"],['"','<','>'],$texto);

var_export($texto);

输出:

'<div onclick="alert(\'código inyectado\');">Texto</div>

[img]http://www.hobbyconsolas.com/sites/hobbyconsolas.com/public/media/image/2015/07/503196-halo-5-guardians-nuevos-datos-campana-cooperativa.jpg[/img]

Y aquí una URL: [url]https://www.google.es/?gws_rd=ssl[/url]

Bueno pues vamos [b]a ver si esto funciona[/b] porque "todavía" no lo sé [i][u]bien[/u][/i]'

fyrye的建议产生了这个 - 如果这是你正在拍摄的:

'<div onclick="alert(&#039;código inyectado&#039;);">Texto</div>

[img]http://www.hobbyconsolas.com/sites/hobbyconsolas.com/public/media/image/2015/07/503196-halo-5-guardians-nuevos-datos-campana-cooperativa.jpg[/img]

Y aquí una URL: [url]https://www.google.es/?gws_rd=ssl[/url]

Bueno pues vamos [b]a ver si esto funciona[/b] porque "todavía" no lo sé [i][u]bien[/u][/i]'

答案 1 :(得分:0)

听起来你是双重编码。为避免双重编码,您可以使用。

htmlspecialchars($texto, ENT_QUOTES, 'UTF-8', false);

请参阅:http://php.net/manual/en/function.htmlspecialchars.php