2017-07-09 4 views
-1

aus der Datenbank ersetze ich den folgenden Text angezeigt:Kann nicht einige HTML-Zeichen mit str_replace()

<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] 

Dieser Text ist in einer $texto namens Variable gespeichert wird. Sobald htmlspecialchars() auf die Variable angewendet, gehe ich, wo ich bin zu finden, das Problem:

$texto = str_replace(""","\"",$texto); //para comillas 
$texto = str_replace("&lt;","<",$texto); // para < 
$texto = str_replace("&gt;",">",$texto); // para > 

aber keine Änderung vorgenommen wird. Wenn ich das Zeichen & lösche, wie kann ich dieses Problem beheben?

+0

'htmlspecialcharacters()' ist nicht eine native PHP-Funktion. Zeig uns, was du gerade machst. – mickmackusa

+0

Es klingt wie du Doppelcodierung bist, benutze 'htmlspecialchars ($ texto, ENT_QUOTES, 'UTF-8', false);' Siehe: http://php.net/manual/en/function.htmmlspecialchars.php – fyrye

+0

@ Fyrye hat funktioniert !!! Ich habe mit einigen HTML-Sonderzeichen versucht und scheint mit allen von ihnen gut zu arbeiten. Beantworte die obige Frage, damit ich sie bestätigen kann. Vielen Dank! –

Antwort

0

würde ich sagen, tun das nicht htmlspecialchars() Anruf, und rufen Sie nur str_replace() einmal:

Code: (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); 

Ausgang:

'<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]' 

Der Vorschlag von fyrye ergibt das - wenn Sie dafür fotografieren:

'<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]'