Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/11/2009, 06:59
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: String a Json con html

json_encode no escapa correctamente, sólo convierte un array a JSON.
Probá este ejemplo y vas a encontrarte con un error:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<?php
$algo
=array('<div id="juan">
hola
</div>
'
,'bla');
$a=json_encode($algo);
?>
<script>
var json="<?php echo $a ?>";
json=eval("("+json+")");
onload=function(){
    document.body.innerHTML=json[0];
}
</script>
</head>

<body>
</body>
</html>
Probá este otro y vas a ver que no hay error:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<?php
function js_encode($s){
    
$texto='';
    
$lon=strlen($s);
    for(
$i=0;$i<$lon;++$i){
        
$num=ord($s[$i]);
        if(
$num<16$texto.='\x0'.dechex($num);
        else 
$texto.='\x'.dechex($num);
    }
    return 
$texto;

$algo=array('<div id="juan">
hola
</div>
'
,'bla');
$a=json_encode($algo);
?>
<script>
var json="<?php echo js_encode($a?>";
json=eval("("+json+")");
onload=function(){
    document.body.innerHTML=json[0];
}
</script>
</head>

<body>
</body>
</html>