Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Marciano_79 en 7 Septiembre 2016, 04:03 am



Título: sustituir espacios vacios en url
Publicado por: Marciano_79 en 7 Septiembre 2016, 04:03 am
Hola amigos.. estoy tratando de modificar mis url algo más "amigables"

cree mi archivo .htaccess y me funciona bien...

de este tipo de url: articulo.php?pag=1-Mi Primer Artículo

el código apache me entrega: articulo/1/Mi Primer Artículo

el resultado lo encuentro bueno, pero quisiera agregar guiones en los espacios vacíos y que todo quede en minúsculas y sin acentos algo así:

articulo/1/mi-primer-articulo

ahora me han dicho que este código me podría servir, pero no se como implementarlo o adaptarlo... a ver si me echan una mano porfavor.

Código
  1. function urls_amigables($url) {
  2. // Tranformamos todo a minusculas
  3. $url = strtolower($url);
  4. //Rememplazamos caracteres especiales latinos
  5. $find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
  6. $repl = array('a', 'e', 'i', 'o', 'u', 'n');
  7. $url = str_replace ($find, $repl, $url);
  8. // Añadimos los guiones
  9. $find = array(' ', '&', '\r\n', '\n', '+');
  10. $url = str_replace ($find, '-', $url);
  11. // Eliminamos y Reemplazamos demás caracteres especiales
  12. $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
  13. $repl = array('', '-', '');
  14. $url = preg_replace ($find, $repl, $url);
  15. return $url;
  16. }

y bueno, la verdad ni idea de como usarlo, ni donde ubicarlo... no se como trabajar con el.. me pueden echar una mano porfavor

Los enlaces de mi código fuente son así..

Código
  1. echo"<p class='p-title'><a href='articulo/$id'>$columna[TITULO]</a></p>";

si se necesita más información, favor solicitarla... gracias!



Título: Re: sustituir espacios vacios en url
Publicado por: Jeferi en 7 Septiembre 2016, 15:36 pm
Yo supongo que es algo así:

Código
  1.  
  2. <?php
  3.  
  4. function urls_amigables($url) {
  5. // Tranformamos todo a minusculas
  6. $url = strtolower($url);
  7. //Rememplazamos caracteres especiales latinos
  8. $find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
  9. $repl = array('a', 'e', 'i', 'o', 'u', 'n');
  10. $url = str_replace ($find, $repl, $url);
  11. // Añadimos los guiones
  12. $find = array(' ', '&', '\r\n', '\n', '+');
  13. $url = str_replace ($find, '-', $url);
  14. // Eliminamos y Reemplazamos demás caracteres especiales
  15. $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
  16. $repl = array('', '-', '');
  17. $url = preg_replace ($find, $repl, $url);
  18. return $url;
  19. }
  20.  
  21. // Más codigo aquí
  22.  
  23. echo"<p class='p-title'><a href='" . urls_amigables("articulo/$id") . "'>$columna[TITULO]</a></p>";
  24.  
  25.  



(aparte de tu pregunta te haré una recomendación)

Te recomendaría encarecidamente utilizar los tags que escriben al flujo de salida directamente.
Yo al menos pienso que es más limpio que estar haciendo echos constantemente

Código
  1. <?php
  2.  
  3. function urls_amigables()
  4. {
  5.  // código
  6. }
  7.  
  8. // Más código
  9.  
  10. $nombre = "John Smith";
  11.  
  12. ?>
  13.  
  14. <h1>Hola Mundo</h1>
  15.  
  16. <p>Un párrafo de prueba <?= $nombre ?></p>
  17.  
  18.  


Título: Re: sustituir espacios vacios en url
Publicado por: Marciano_79 en 7 Septiembre 2016, 17:41 pm
muchas gracias Jeferi me ha servido, ya esta solucionado, mis url ya están mas limpias... por otra parte, tomare bien en cuenta tu recomendación.!! gracias...