Foros del Web » Programando para Internet » PHP »

Recuperar valor original de una cadena ya convertida a url amigable.

Estas en el tema de Recuperar valor original de una cadena ya convertida a url amigable. en el foro de PHP en Foros del Web. Hola. Estoy haciendo una url amigable a través de los campos "title" de cada tabla, por ejemplo Inicio, El arte de escribir, Desarrollo web que ...
  #1 (permalink)  
Antiguo 23/03/2018, 08:30
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 8 meses
Puntos: 65
Recuperar valor original de una cadena ya convertida a url amigable.

Hola.

Estoy haciendo una url amigable a través de los campos "title" de cada tabla, por ejemplo Inicio, El arte de escribir, Desarrollo web que utilizando esta función para la url amigable quedarían así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. function seo_url($cadena){
  4.     $cadena= utf8_decode($cadena);
  5.     $cadena = str_replace(' ', '-', $cadena);
  6.     $cadena = str_replace('?', '', $cadena);
  7.     $cadena = str_replace('+', '', $cadena);
  8.     $cadena = str_replace(':', '', $cadena);
  9.     $cadena = str_replace('??', '', $cadena);
  10.     $cadena = str_replace('`', '', $cadena);
  11.     $cadena = str_replace('!', '', $cadena);
  12.     $cadena = str_replace('¿', '', $cadena);
  13.     $originales = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ??';
  14.     $modificadas = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
  15.     $cadena = strtr($cadena, utf8_decode($originales), $modificadas);
  16.    
  17.     $cadena_minuscula = strtolower($cadena);
  18.    
  19.     return $cadena_minuscula;
  20.    
  21. }
  22.  
  23. //Título url amigable
  24. $paginaUrl = seo_url($value["title"]); 
  25. echo '<li class=""><a href="'.$paginaUrl.'" class="">'.$value["title"].'</a><i class="fa fa-circle" aria-hidden="true"></i></li>';
  26.  
  27. ?>

Entonces dichos enlaces se enviarían así para la url:

Código HTML:
Ver original
  1. <li class=""><a href="inicio" class="">Inicio</a><i class="fa fa-circle" aria-hidden="true"></i></li>
  2. <li class=""><a href="el-arte-de-escribir" class="">El arte de escribir</a><i class="fa fa-circle" aria-hidden="true"></i></li>
  3. <li class=""><a href="desarrollo-web" class="">Desarrollo web</a><i class="fa fa-circle" aria-hidden="true"></i></li>

La página que recoge el valor de la url con Get lo recibe entonces por el valor codificado -> $paginaUrl y al comprobarlo lo hago lo hago por dos campos :

Código PHP:
Ver original
  1. $item = "title";//Campo de la tabla páginas a consultar.
  2. $valor = $_GET["ruta"];//Valor que viene en la url para comprobar en el campo $item de la tabla.
  3.  
  4. if(isset($_GET["ruta"])){
  5.      $valor = $_GET["ruta"];
  6. }

Entonces al comprobar en la tabla el campo "title" no existe ya que le envío la url amirable (seo_url)

El .htaccess de prueba estaría así:

Código:
RewriteRule ^([-a-zA-Z0-9/]+)$ index.php?ruta=$1
Se que si también enviase el "id" de cada título podría hacerlo de otra manera o incluso aumentando los parámetros en el .htaccess pero mi duda es:

¿Sería posible recuperar el valor original de la cadena antes de ser amigable para volver a enviar como título? Es decir, volver a pasar o recuperar "el-arte-de-escribir" al original title ->"El arte de escribir" para hacer las comprobaciones en cada tabla por "title".

Se que también sería posible hacerlo con su id o incluso creando un campo "ruta" en cada tabla y hacer la comprobación por ese "ruta" en vez de "title" pero por ahora me gustaría ver si es posible hacer la opción de recuperar el original.

Saludos.
  #2 (permalink)  
Antiguo 23/03/2018, 08:47
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Recuperar valor original de una cadena ya convertida a url amigable.

No puedes "revertir" el título cuando contenga acentos o caracteres especiales y lo más recomendable es guardar la cadena en la base de datos.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 23/03/2018, 13:34
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 8 meses
Puntos: 65
Respuesta: Recuperar valor original de una cadena ya convertida a url amigable.

Ah ok.

Entonces, ¿me recomiendas como mejor opción guardar la cadena como seo_url en un nuevo campo aparte?

Por ejemplo esta:

/Título url amigable
$paginaUrl = seo_url($value["title"]);

¿De ahí guardaría el valor de $paginaUrl en la tabla con un nuevo campo llamado "ruta" o "url" etc etc?

Gracias Triby.

Saludos.
  #4 (permalink)  
Antiguo 23/03/2018, 17:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Recuperar valor original de una cadena ya convertida a url amigable.

Efectivamente, así es más fácil obtener el contenido a mostrar.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 23/03/2018, 17:57
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 8 meses
Puntos: 65
Respuesta: Recuperar valor original de una cadena ya convertida a url amigable.

De acuerdo, creo que lo haré así entonces.

De nuevo muchas gracias Triby.

Etiquetas: cadena, original, tabla, url, valor
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:54.