Exacto. Escapamos los caracteres para que, entre otra cosas, javascript no encuentre saltos de línea. Hay que evitar los saltos de línea porque, cuando javascript encuentra uno, lo interpreta como final de instrucción y, si estamos trabajando con cadenas, aparece el famoso error de string mal determinado, ya que quedan comillas sin cerrar (según el intérprete) debido al salto de línea.
Esa cadena escapada, si se vuelca mediante un innerHTML, por ejemplo, se mostrará correctamente:
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ítulo</title>
</head>
<body>
<div id="salida"></div>
<script>
var theTexts=[];
theTexts[1] ="\x31\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66";
document.getElementById('salida').innerHTML=theTexts[1];
//muestra: 1 Informacion Informacion Informacion Informacion Informacion Informacion Informacion Inf
</script>
</body>
</html>
Es cierto que no te está mostrando los saltos de línea en ese fragmento. Tendrás que ver si la salida php, antes de pasarla a la función, los contiene efectivamente, porque la función sí los muestra cuando existen.
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ítulo</title>
</head>
<body>
<div id="salida"></div>
<script>
<?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;
}
$t="
1
Informacion
Informacion
Informacion
Informacion
Informacion
";
?>
var theTexts=[];
theTexts[1] ="<?php echo js_encode($t) ?>";
document.getElementById('salida').innerHTML='<pre>'+theTexts[1]+'</pre>';
/*muestra:
1
Informacion
Informacion
Informacion
Informacion
Informacion
*/
</script>
</body>
</html>