Foros del Web » Programando para Internet » PHP »

PHP OO Problema Ñ no consigo sustitucion

Estas en el tema de Problema Ñ no consigo sustitucion en el foro de PHP en Foros del Web. Hola a todos he estado probando varias funciones y codigos para sustituir las Ñ por N, pero no he conseguido nada, solo que me salga ...
  #1 (permalink)  
Antiguo 02/06/2012, 13:22
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Pregunta Problema Ñ no consigo sustitucion

Hola a todos he estado probando varias funciones y codigos para sustituir las Ñ por N, pero no he conseguido nada, solo que me salga un rombo con un interrogante en el interior.

VER CAPTURA


Titulo completo: Manu Santacruz, Bengro Garcia & Alejandro Martin - Esa Niña (Original Mix)
Objetivo: manu-santacruz-bengro-garcia-alejandro-martin-esa-nina-original-mix


Lo que tengo para sustuir y crear las urls amigables es:
Código PHP:
function sef($cadena){
$sef trim($sef);
$sef strtr($cadena"áéíóúÁÉÍÓÚñÑçÇ""aeiouAEIOUnNcC");
$sef preg_replace("/¡|¿|\?|!|\^|'|:|@|#|\$|%|\"|~|\+|\*|\/|\||\\|\[|\]|\(|\)|\{|\}/","",$sef);
$sef ereg_replace("[.]"""$sef);
$sef preg_replace("/,/","",$sef);
$sef preg_replace("/'/","",$sef);
$sef preg_replace("/´/","",$sef);
$sef preg_replace("/&/","",$sef);
$sef preg_replace("/( - |- | -| )/","-",$sef);
$sef preg_replace("/-{2,}/","-",$sef);
$sef preg_replace("/^-|-+$/","",$sef);
return 
$sef;

  #2 (permalink)  
Antiguo 02/06/2012, 14:19
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Problema Ñ no consigo sustitucion

Hola que tal.

Busca los hexagecimales para caracteres este hexagecimal tendra mas o menos esta forma: \xf1 es mas creo que este es la ñ

Buscalo de todas formas.

Estos caracteres los puedes utilizar en las funciones de remplazo de caracteres y cadenas asi como en exprsiones regulares.

Cuando quieras remplazar caracteres del ascii aumentado como lo es la ñ, deberas utilizar la expresión en hexagecimal.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 03/06/2012, 00:30
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema Ñ no consigo sustitucion

No comprendo muy bien el como hacerlo...

He añadido esta linea a la funcion anterior:
Código PHP:
$sef ereg_replace("\xf1""n"$sef); 
Es más la URL me aparece de la siguiente forma:
Código HTML:
Ver original
  1. http://www.djboro.es/track/156/manu-santacruz-bengro-garcia-alejandro-martin-esa-nic%25EF%25BF%25BDa-original-mix

Pero sigue sin funcionar...
¿Algun idea?

Última edición por djboro88; 03/06/2012 a las 00:44
  #4 (permalink)  
Antiguo 03/06/2012, 01:30
 
Fecha de Ingreso: marzo-2012
Ubicación: Merida
Mensajes: 15
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Problema Ñ no consigo sustitucion

El codigo de la letra ñ en html es este: ñ

Asi que de alguna manera tienes que detectar el rombo y sustiuirlo por ese codigo.

Saludos
  #5 (permalink)  
Antiguo 03/06/2012, 02:55
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema Ñ no consigo sustitucion

He añadido esto a la funcion:
Código PHP:
$sef ereg_replace("ñ""n"$sef); 
Y continua saliendo el rombo...
Tengo que decir en la base de datos está almacenada como ñ y no como ñ

¿Alguna sujerencia?
  #6 (permalink)  
Antiguo 03/06/2012, 15:58
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años
Puntos: 58
Respuesta: Problema Ñ no consigo sustitucion

Yo creo que el problema es que envías la cadena codificada en utf8... prueba así:
Código PHP:
function sef($cadena){
$self=utf8_decode($cadena);
$sef trim($sef);
$sef strtr($cadena"áéíóúÁÉÍÓÚñÑçÇ""aeiouAEIOUnNcC");
$sef preg_replace("/¡|¿|\?|!|\^|'|:|@|#|\$|%|\"|~|\+|\*|\/|\||\\|\[|\]|\(|\)|\{|\}/","",$sef);
$sef ereg_replace("[.]"""$sef);
$sef preg_replace("/,/","",$sef);
$sef preg_replace("/'/","",$sef);
$sef preg_replace("/´/","",$sef);
$sef preg_replace("/&/","",$sef);
$sef preg_replace("/( - |- | -| )/","-",$sef);
$sef preg_replace("/-{2,}/","-",$sef);
$sef preg_replace("/^-|-+$/","",$sef);
return 
$sef;

  #7 (permalink)  
Antiguo 04/06/2012, 03:26
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema Ñ no consigo sustitucion

He copiado el codigo que has añadido...
Y nada sigue igual, apareciendo una el rombo.

Además he modificado la función por esta:
Código PHP:
function corregir_titulos($cadena){
$sef utf8_decode($cadena);
$sef preg_replace("/¡|¿|\?|!|\^|'|:|@|#|\$|%|&|\"|~|\+|\*|\/|\||\\|\[|\]|\(|\)|\{|\}/","",$sef);
$sef ereg_replace("[.]"""$sef);
$sef preg_replace("/,/","",$sef);
$sef preg_replace("/[áàâãª]/","a",$sef);
$sef preg_replace("/[ÁÀÂÃ]/","A",$sef);
$sef preg_replace("/[éèê]/","e",$sef);
$sef preg_replace("/[ÉÈÊ]/","E",$sef);
$sef preg_replace("/[íìî]/","i",$sef);
$sef preg_replace("/[ÍÌÎ]/","I",$sef);
$sef preg_replace("/[óòôõº]/","o",$sef);
$sef preg_replace("/[ÓÒÔÕ]/","O",$sef);
$sef preg_replace("/[úùû]/","u",$sef);
$sef preg_replace("/[ÚÙÛ]/","U",$sef);
$sef str_replace("ç","c",$sef);
$sef str_replace("Ç","c",$sef);
$sef str_replace("ñ","n",$sef);
$sef str_replace("ñ","n",$sef);
$sef str_replace("Ñ","N",$sef);
$sef preg_replace("/'/","",$sef);
$sef preg_replace("/´/","",$sef);
$sef preg_replace("/( - |- | -| )/","-",$sef);
$sef preg_replace("/-{2,}/","-",$sef);
$sef preg_replace("/^-|-+$/","",$sef);
return 
$sef;

Y en la pagina tengo:
Código HTML:
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
Y la letra que aparecia delante del rombo, ya no aparece...
Pero el rombo persiste...

No se porque no se sustituye.
¿Alguna idea más...?

Última edición por djboro88; 04/06/2012 a las 03:40
  #8 (permalink)  
Antiguo 04/06/2012, 04:07
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema Ñ no consigo sustitucion

Que tal djboro88,

Te dejo una referencia que talves te sirva http://cubiq.org/the-perfect-php-clean-url-generator

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 04/06/2012, 04:19
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema Ñ no consigo sustitucion

Gracias masterpuppet !!

El codigo que me ha funcionado ha sido este:
Código PHP:
setlocale(LC_ALL'en_US.UTF8');
$sef iconv('UTF-8''ASCII//TRANSLIT'$cadena);
$sef preg_replace("/[^a-zA-Z0-9\/_| -]/"''$sef);
$sef strtolower(trim($sef'-'));
$sef preg_replace("/[\/_| -]+/"'-'$sef); 
Saludos y Gracias a todos !!

Etiquetas: eñes, sustituir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:53.