Foros del Web » Programando para Internet » PHP »

Caracteres especiales y mod-rewrite

Estas en el tema de Caracteres especiales y mod-rewrite en el foro de PHP en Foros del Web. hola!! estoy utilizando un sistema de optimización para mis foros phpBB y bueno funciona perfecto creando direcciones no dinamicas con varios scripts y mod-rewrite, pero ...
  #1 (permalink)  
Antiguo 10/03/2006, 11:12
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Caracteres especiales y mod-rewrite

hola!!

estoy utilizando un sistema de optimización para mis foros phpBB y bueno funciona perfecto creando direcciones no dinamicas con varios scripts y mod-rewrite, pero hay un pequeño problema:

Si por ejemplo el titulo de un post contiene un acento o un caracter especial lo qeu hace modrewrite es eliminar dicho caracter, por ejemplo:

si el titulo es:
La última noche

el link lo deja asi:
la-ltima-noche-vt365.php

es decir elimina la letra ù por que lleva acento, nomal ya uqe las direcciones web no soportan acentos ni caracteres especiales

en definitiva, ¿¿¿puedo conseguir que muestre las palabras sin acentos aunque esos acentos esten en el titulo???

el script que sustituye las direcciones en el header.php es este:
Código PHP:
<?
ob_start
(); 
function 
make_url_friendly($url

  
$url strtolower($url); 
  
$find = array(' '
                
'&'
                
'\r\n'
                
'\n'
                
'+'); 
  
$url str_replace ($find'-'$url); 
  
$find = array('/[^a-z0-9\-<>]/'
                
'/[\-]+/'
                
'/<[^>]*>/'); 
  
$repl = array(''
                
'-'
                
''); 
  
$url =  preg_replace ($find$repl$url); 
  return 
$url

function 
rewrite_urls($content

  function 
if_query($amp
  { 
    if(
$amp != ''
    { 
      return 
'?'
    } 
  } 
  
$url_in = array('/(?<!\/)viewforum.php\?f=([0-9]+)((&)|(&)){0,1}([^>]+>)(.*?)<\/a>/e'
                  
'/(?<!\/)viewtopic.php\?t=([0-9]+)((&)|(&)){0,1}([^>]+>)(.*?)<\/a>/e'); 
  
$url_out = array("make_url_friendly('\\6') . '-vf\\1.php' . if_query('\\2') . stripslashes('\\5\\6') . '</a>'"
                   
"make_url_friendly('\\6') . '-vt\\1.php' . if_query('\\2') . stripslashes('\\5\\6') . '</a>'"); 
  
$content preg_replace($url_in$url_out$content); 
  return 
$content
}
¿como hago para que sustituya los caracteres especiales por sus homologos no especiales? es decir palabras acentuadas por palabras sin acentos...

Basicamente es para mejorar el posicionamiento e indexación en google y otros buscadores.

saludos

Última edición por MindPaniC; 10/03/2006 a las 18:37
  #2 (permalink)  
Antiguo 10/03/2006, 12:42
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 20 años
Puntos: 1
Buenas, por que no haces un str_replace¿?
$nuevo=str_replace("á", "a", "La última noche");
$nuevo=str_replace("é", "e", $nuevo);
$nuevo=str_replace("í", "i", $nuevo);
$nuevo=str_replace("ó", "o", $nuevo);
$nuevo=str_replace("ú", "u", $nuevo);

Podría servirte claro a menos que encuentres una funcion mejos.... Saludos
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #3 (permalink)  
Antiguo 10/03/2006, 12:45
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 20 años
Puntos: 1
Eyyy. buscando por ahi me encontre la funcion preg_replace() donde puedes utilizar matrices de valores a buscar y matrices de valores a reemplazar dentro de uan misma cadena, busca algo y comentanos... Saludos
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #4 (permalink)  
Antiguo 10/03/2006, 12:59
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 8 meses
Puntos: 20
MindPaniC, estas usando un MOD para el phpBB o lo estas configurando vos mismo a mano? Te pregunto porque probe un par de MOD que me dieron problemas y no eran muy configurables, y estoy buscando alguna otra forma de lograr las direcciones estaticas (tambien llamadas "direcciones amigables")
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #5 (permalink)  
Antiguo 10/03/2006, 13:40
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 20 años
Puntos: 1
Buenas aqui estoy de nuevo:

<?php
$cadena = 'heché niño Aquí allá sopló únio';
$buscar[0] = '/á/';
$buscar[1] = '/é/';
$buscar[2] = '/í/';
$buscar[3] = '/ó/';
$buscar[4] = '/ú/';
$buscar[4] = '/ñ/';

$cambiar[0] = 'a';
$cambiar[1] = 'e';
$cambiar[2] = 'i';
$cambiar[3] = 'o';
$cambiar[4] = 'u';
$cambiar[4] = 'n';

echo preg_replace($buscar, $cambiar, $cadena);
?>
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #6 (permalink)  
Antiguo 10/03/2006, 18:41
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Cita:
Iniciado por K3NNY
MindPaniC, estas usando un MOD para el phpBB o lo estas configurando vos mismo a mano? Te pregunto porque probe un par de MOD que me dieron problemas y no eran muy configurables, y estoy buscando alguna otra forma de lograr las direcciones estaticas (tambien llamadas "direcciones amigables")
Digamos que son unas modificaciones que encontre en la red y que por cierto dan muy buenos resultados... eso si tambien he hecho varias modificaciones en el header para que muestre el titulo del tema antes que el nombre de la web en todos los titles de la web... si visitas mis foros te daras cuenta al navegar por ellos.

el link del tutorial para hacer la optimizacion y pasar a usar direcciones amigables es este: http://www.peoplecnc.com/phpbb_optimizacion.html

ahora lo que busco es resolver el problema de los caracteres especiales.
  #7 (permalink)  
Antiguo 10/03/2006, 18:46
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Cita:
Iniciado por jmqc
Buenas, por que no haces un str_replace¿?
$nuevo=str_replace("á", "a", "La última noche");
$nuevo=str_replace("é", "e", $nuevo);
$nuevo=str_replace("í", "i", $nuevo);
$nuevo=str_replace("ó", "o", $nuevo);
$nuevo=str_replace("ú", "u", $nuevo);

Podría servirte claro a menos que encuentres una funcion mejos.... Saludos
no lo he usado por que si te fijas ya hay un str_replace en el script que basicamente transforma espacios y otras alteraciones a "-" para dejar las frases asi, y pense que quizas podria dar lugar a problemas ya que ya hay uno en uso

www.tuweb.com/maria-estaba-muy-buena.php

mmmm probare como lo que comentas despues... a ver si furrula.
  #8 (permalink)  
Antiguo 22/03/2006, 16:54
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
no me sale he probado a insertarlo y me cargo el script....

como hay varios str_replace y preg_replace no se como acoplarlo todo...

menudo lio
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 21:51.