Conversión de cadena PHP a array javascript

tada

Estoy tratando de hacer la conversión de una cadena PHP a un array en javascript, tal que cada letra de la cadena quede en una posición del array.

Al principio todo estupendo porque me encontré que podía hacer str_split()+implode() en PHP sumada a la función .split() de javascript.. tal que así:

<?php
	$arr = str_split(strtoupper($out[1]));
	$str ='"'.implode(",", $arr).'";';
	echo "var palabra = ".$str;
?>
        //javascript
	var palabra = palabra.split(",");

Ese código hace lo que quiero, pero hay un problema. Cuando me encuentro una Ñ en la cadena la conversión se jode y en el array javascript aparecen dos valores "raros" en el array. Mirando por ahí parece que es un problema de la función str_split() que trata las Ñ como si fuesen dos carácteres (de esos rarillos) y claro, cuando imprimo por pantalla no sale lo que debería en el código js.

Hay alguna forma mejor de hacer la conversión de la cadena PHP al array en javascript? Estoy algo atascado con lo de la Ñ (y seguro que pasa con otros carácteres..), alguna idea?

PiNcHaNcE

Puedes usar js para la conversión en vez de php, no lo he probado, pero no debería dar problemas con las Ñ.

var str = <?php echo $out[1];?>;
var palabra = str.toUpperCase().split("");
1 1 respuesta
EnZo

Eso es más tema de codificación que de programación.
Lo tienes como UTF-8?

1 respuesta
tada

#2 pues funciona perfecto! gracias

También tenía que sacar la longitud de la cadena para otra cosa y con el strlen($palabra) me contaba la Ñ como 2 carácteres, por si a alguien le interesa he encontrado la función mb_strlen($palabra,"UTF-8") que hace lo mismo pero le puedes pasar la codificación de carácteres y funciona perfecto.

#3 Si, todo está en UTF-8, el problema era que la función str_split() de PHP no deja especificar la codificación.. que yo sepa vamos.

Usuarios habituales

  • tada
  • EnZo
  • PiNcHaNcE