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
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
Puntos
4454
Visitas
Visitas
9
Resp
Resp
Por Dimetrix hace 101 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 https://datoweb.com/post/894-tutorial-crear-url-amigable-con-php
1
Puntos
Puntos
Por alber hace 101 meses
Administrador
Respuesta #2
Amigo alber, me perdi, no se como implementarla..
en cantante.php tengo:
donde hago la consulta:
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
Puntos
Por Dimetrix hace 101 meses
Principiante
Respuesta #3
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í..
> 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í:
Finalmente, en tu consulta cambiarías en el WHERE canciones.nombre_artista por canciones.nombre_artista_seo
Prueba y cuéntanos como te fue.
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.
Respuesta #4
Hola a todos, miren como solucione todo..
donde agrego el nombre del artista hice con la funcion que me dieron aqui... esto:
y donde mostrare el nombre del artista
use:
bueno asi hice y asi me funciona perfecto
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
Puntos
Por Dimetrix hace 101 meses
Principiante
Respuesta #5
Ah bueno, perfecto. Sin mucha complicación. :D
Respuesta #6
Si gracias a todos por su ayuda.
0
Puntos
Puntos
Por Dimetrix hace 101 meses
Principiante
Respuesta #7
Hola nuevamente, me acabo de dar cuenta que este codigo que estoy usando en la inserción de datos
pero si coloco una Ñ o ñ Mayuscula o Minuscula me coloca esto ??
GetSQLValueString(strtolower(str_replace(' ', '-', $_POST['nombre_artista'])), "text"),
pero si coloco una Ñ o ñ Mayuscula o Minuscula me coloca esto ??
0
Puntos
Puntos
Por Dimetrix hace 101 meses
Principiante
Respuesta #8
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")
Respuesta #9
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"
si escribo "ñejo flow" cuando inserto dato me sale "ejo flow"
1
Puntos
Puntos
Por Dimetrix hace 101 meses
Principiante