Seleccionar y reemplazar caracteres no ASCII
Frecuentes
Visto 309 veces
0
He escrito una función simple para reemplazar los caracteres turcos no ASCII.
function url_cevir($yazi) {
$yazi = trim($yazi);
$eski = array('ü','Ü','ö','Ö','ş','Ş','ç','Ç','ı','İ','ğ','Ğ',' ');
$yeni = array('%C3%BC','%C3%9C','%C3%B6','%C3%96','%C5%9F','%C5%9E','%C3%A7','%C3%87','%C4%B1','%C4%B0','%C4%9F','%C4%9E','%20');
return str_replace($eski,$yeni,$yazi);
}
Precisamente funciona cuando lo defino en la página donde lo llamo. Pero solo reemplaza espacios cuando lo incluyo con una página externa.
Todos los códigos están aquí y no hay ningún otro código que los contamine.
de la página externa:
<?php
include('functions/array_and_string_fns.php');
echo url_cevir('ısı geçişi');
?>
si lo uso con echo url_cevir('ısı geçişi');
imprime ısı%20geçişi
Si uso echo ('ısı geçişi');
imprime ısı geçişi
como esperábamos.
Así que creo que el problema proviene de la función url_cevir Y creo que me estoy perdiendo algo muy simple. De lo contrario, es un problema muy interesante.
1 Respuestas
1
Cuando coloca caracteres literales en un archivo fuente, la codificación del archivo fuente real se vuelve significativa.
Creo que sus archivos fuente tienen codificaciones diferentes. Verifique la configuración en su editor de texto.
Respondido el 24 de diciembre de 12 a las 18:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php utf-8 str-replace replace or haz tu propia pregunta.
no entiendo el problema Si no desea que su función codifique espacios como
%20
, elimine esa parte de las matrices en su función. - Mike BrantTiene que reemplazar todos los caracteres $eski= con caracteres $yeni=. Pero solo reemplaza espacios cuando incluyo esta función. - mcan