Foros del Web » Programando para Internet » PHP »

funcion rewrite?

Estas en el tema de funcion rewrite? en el foro de PHP en Foros del Web. Hola: estuve revisando el foro si encontraba algo para armar una funcion que me permita crear url amigables, algo estilo wp, en la cual mediante ...
  #1 (permalink)  
Antiguo 06/05/2009, 21:44
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
funcion rewrite?

Hola:
estuve revisando el foro si encontraba algo para armar una funcion que me permita crear url amigables, algo estilo wp, en la cual mediante una funcione crea la url segun los parametros de la configuración.
Basicamente busco armar algo asi:
Código php:
Ver original
  1. <a href="<? echo funcion_crear_link($id)">Ver</a>

y que salga:
Código html:
Ver original
  1. <a href="index.html/modulo/titulo_variable.html">Ver</a>

que seria el equivalente a:
index.php?modules=noticias&amp;opcion=ver&amp;id=1

Lo del .htaccess se como armarlo, lo que no se es como reescribir la url del link sin que tenga que hacerlo manualmente.

Si alguien sabe como hacerlo o donde puedo encontrar info.

desde ya muchas gracias
  #2 (permalink)  
Antiguo 07/05/2009, 12:42
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: funcion rewrite?

No es tan recomendable tener la extension html seguida del diagonales y mas parametros, la estructura que tengo yo es: sitio.com/modulo/elemento-idNUMERO, en tu caso seria: sitio.com/noticias/titulo-noticia-n1/ o sitio.com/noticias/titulo-noticia-n1.html

En cada modulo que tengas crea primero la URL base, por ejemplo en noticias.php tendrias:
Código php:
Ver original
  1. $url_base = '/noticias/'; // agrega http://www.sitio.com al principio, si lo crees necesario
  2.  
  3. // Aqui creas el link para ver las noticias
  4. $id_noticia = 1;
  5. $titulo_noticia = 'Este es el título de la noticia';
  6. $link_noticia = $url_base . friendly($titulo_noticia) . '-n' . $id_noticia . '.html';
  7.  
  8.  
  9. // La función friendly:
  10. function friendly($str) {
  11.     // quitar entidades html
  12.     $search = array('&lt;', '&gt;', '&quot;', '&amp;');
  13.     $str = str_replace($search, '', $str);
  14.     $str = preg_replace('/&(?!#[0-9]+;)/s', '', $str);
  15.  
  16.     // quitar preposiciones y articulos, agrega o quita las que creas convenientes
  17.     $search = array(' a ', ' ante ', ' de ', ' para ', ' con ', ' contra ', ' por ', ' entre ', ' en ', ' sobre ', ' bajo ', ' y ', ' e ', ' o ', ' u ', ' este ',  'aquel ', ' la ', ' el ', ' lo ', ' las ', ' los ');
  18.     $str = str_replace($search, ' ', strtolower($str));
  19.  
  20.     // Convertir acentos, dieresis,  tildes y guiones
  21.     $search = array('Á', 'É', 'Í', 'Ó', 'Ú', 'á', 'é', 'í', 'ó', 'ú', 'Ü', 'ü', 'Ñ', 'ñ', '_', '-');
  22.     $replace = array('a', 'e', 'i', 'o', 'u', 'a', 'e', 'i', 'o', 'u', 'u', 'u', 'n', 'n', ' ', ' ');
  23.     $str = str_replace($search, $replace, strtolower(trim($str)));
  24.  
  25.     // Eliminar caracteres no alfanumericos
  26.     $str = preg_replace("/[^a-zA-Z0-9\s]/", '', $str);
  27.     // Cambiar espacios multiples por 1 solo espacio
  28.     $str = preg_replace('/\s\s+/', ' ', $str);
  29.     // Cambiar espacios por guiones (preferiblemente medios, no bajos)
  30.     $str = str_replace(' ', '-', $str);
  31.     return $str;
  32. }
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 07/05/2009 a las 12:52
  #3 (permalink)  
Antiguo 07/05/2009, 13:04
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: funcion rewrite?

Triby tiene toda la razón, yo le agregaría que luego esa función friendly($str) la vas usar en todas tus páginas cuando generes tus links. Ejemplo (noticias):

Código PHP:
 $q "SELECT * FROM noticias";
    
$result mysql_query($q) or die ($error_sel);
    while(
$row mysql_fetch_array($result)) {
    echo
"<a href='www.tusitio.com/".$row["id_noticia"]."/".friendly($row["titulo_noticia"])."'title='"$row["titulo_noticia""'>Enlace</a>";
     } 
  #4 (permalink)  
Antiguo 07/05/2009, 22:01
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: funcion rewrite?

gracias muchachos lo intento y cualquier cosa vuelvo a molestarlos jejeje
  #5 (permalink)  
Antiguo 07/05/2009, 22:17
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: funcion rewrite?

Muy buena funcion Triby

Última edición por Ronruby; 07/05/2009 a las 22:47
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 13:08.