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
4340
Visitas
Visitas
9
Resp
Resp
Por dimetrix hace 10 años
Novice
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://phpres.net/php-poo/tutorial-crear-url-amigable-con-php1
Puntos
Puntos
Por alber hace 10 años
Admin
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 artistadonde 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 10 años
Novice
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.
0
Puntos
Puntos
Por jose hace 10 años
Master
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 10 años
Novice
Respuesta #5
Ah bueno, perfecto. Sin mucha complicación. :D
0
Puntos
Puntos
Por jose hace 10 años
Master
Respuesta #6
Si gracias a todos por su ayuda.
0
Puntos
Puntos
Por dimetrix hace 10 años
Novice
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 10 años
Novice
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íasGetSQLValueString(urls_amigables($_POST['nombre_artista']), "text")
0
Puntos
Puntos
Por jose hace 10 años
Master
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 10 años
Novice