Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Quitar el %20 de mi url - [Url Amigables]

Hola, saludos a todos.

Tengo la siguiente url

http://localhost:8080/web/cantante/Benito%20Juarez

yo quiero sustituir el espacio en blanco "%20" por un guion " - "

como haria? estoy haciendo una web en php
0
Puntos
938
Visitas
9
Resp
Por Dimetrix hace 28 meses
Principiante

Respuesta #1

Hola, tienes que crear una función que remplace los espacios en guiones, te dejo un ejemplo:
<?php
function urls_amigables($url) {
// Tranformamos todo a minusculas
$url = strtolower($url);
//Rememplazamos caracteres especiales latinos
$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
$repl = array('a', 'e', 'i', 'o', 'u', 'n');
$url = str_replace ($find, $repl, $url);
// Añadimos los guiones
$find = array(' ', '&', '\r\n', '\n', '+'); 
$url = str_replace ($find, '-', $url);
// Eliminamos y Reemplazamos demás caracteres especiales
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url = preg_replace ($find, $repl, $url);
return $url;
}
?>

<?php 
//Imprime titulo-de-prueba-url-amigable
echo urls_amigables('Titulo de prueba url amigable!');
?>
enlace al tutorial http://datoweb.com/post/894-tutorial-crear-url-amigable-con-php
1
Puntos
Por alber hace 28 meses
Administrador

Respuesta #2

Hola es que si uso esa funcion me cambia la "ñ" por la "n" y si quito de la funcion la ñ y n para que cuando inserte esos datos no tenga algun cambio... entonces al hacer eso ahora cuando inserto ñ simplemente NO sale,

si escribo "ñejo flow" cuando inserto dato me sale "ejo flow"
1
Puntos
Por Dimetrix hace 28 meses
Principiante

Respuesta #3

Amigo alber, me perdi, no se como implementarla..

en cantante.php tengo:
$varID_canciones_artistas = "0";
if (isset($_GET["id"])) {
  $varID_canciones_artistas = $_GET["id"];
}


mysql_select_db($database_webartista, $webartista);


$query_canciones_artistas = sprintf("SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista WHERE canciones.nombre_artista = %s", GetSQLValueString($varID_canciones_artistas, "text") );
$canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
$row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);
en ese archivo es donde muestro toda la informacion que deseo de un artista

donde hago la consulta:
<?php echo $row_canciones_artistas['nombre_artista']; ?>
pero la verdad es que no se como implementar esa funcion y donde colocarla,
0
Puntos
Por Dimetrix hace 28 meses
Principiante

Respuesta #4

Dimetrix primero que nada, debes copiar todo lo que está dentro de las primeras etiquetas <?php ?> que te mostró alber. Luego, debes pegarla en algun archivo que tenga todo en común, en los tutoriales usamos un archivo llamado funciones.php o functions.php, allí iría el código.

Luego, tú has de tener un enlace que te lleve a donde el artista algo así..
<a href="http://localhost:8080/web/cantante/<?php row_canciones_artistas['nombre_artista']">
Benito Juarez
</a>
Pero el nombre del artista viene con el espacio incluido, y en la URL no se acepta espacio por lo que se reemplaza por Benito%20Juarez. Lo que yo haría es lo siguiente:

> En la base de datos, en la tabla artistas y en la tabla canciones crearía otro campo llamado nombre_artista_seo

Y cuando yo registre a un nuevo artista, en ese campo se va a insertar urls_amigables($nombre_artista). Entonces si yo registro a Benito Juarez, en el campo nombre_artista_seo aparecería benito-juarez (en minúscula).

Bien, ahora en tus enlaces debería ser así:
<a href="http://localhost:8080/web/cantante/<?php row_canciones_artistas['nombre_artista_seo']">
Benito Juarez
</a>

Finalmente, en tu consulta cambiarías en el WHERE canciones.nombre_artista por canciones.nombre_artista_seo
$query_canciones_artistas = sprintf("SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista WHERE canciones.nombre_artista_seo = %s",
GetSQLValueString($varID_canciones_artistas, "text"));

Prueba y cuéntanos como te fue.


0
Puntos
Por Jose hace 28 meses
Experto Sitio web

Respuesta #5

Hola a todos, miren como solucione todo..

donde agrego el nombre del artista hice con la funcion que me dieron aqui... esto:
 GetSQLValueString(urls_amigables($_POST['nombre_artista']), "text"),
Quien me agregara un guion en el espacio en blanco y creara la url bien.

y donde mostrare el nombre del artista

use:
str_replace("-"," ",$row_jr_cantante['nombre_artista']); ?>
que me remplazara el guion por un espacio en blanco..
bueno asi hice y asi me funciona perfecto
0
Puntos
Por Dimetrix hace 28 meses
Principiante

Respuesta #6

Ah bueno, perfecto. Sin mucha complicación. :D
0
Puntos
Por Jose hace 28 meses
Experto Sitio web

Respuesta #7

Si gracias a todos por su ayuda.
0
Puntos
Por Dimetrix hace 28 meses
Principiante

Respuesta #8

Hola nuevamente, me acabo de dar cuenta que este codigo que estoy usando en la inserción de datos
GetSQLValueString(strtolower(str_replace(' ', '-', $_POST['nombre_artista'])), "text"),

pero si coloco una Ñ o ñ Mayuscula o Minuscula me coloca esto ??
0
Puntos
Por Dimetrix hace 28 meses
Principiante

Respuesta #9

Eso es porque solo estás reemplazando el espacio vacío por el guión -. Recomiendo que uses la función que te dio alber. Ubica esa función en algún archivo PHP que se comunique con tus consultas, y lo único que debes hacer es que en vez de colocar
GetSQLValueString(strtolower(str_replace(' ', '-', $_POST['nombre_artista'])), "text")
Colocarías
 GetSQLValueString(urls_amigables($_POST['nombre_artista']), "text")



0
Puntos
Por Jose hace 28 meses
Experto Sitio web

Relaccionados

Para comentar Inicia sesión o Registrate