Cita: Te equivocas, y hablas sin saber, y en serio, para eso mejor uno se queda callado...
Si escribo aqui es porque llevo bastante tiempo investigando sobre el problema. Que tu eres muy listo y lo has conseguido solucionar a la primera, felicidades, pero yo no, y por eso pregunto.
Hablo basandome
en esto, donde los primero 15 resultados responden a tu pregunta, por lo tanto supongo que no buscaste en google primero (Eso esta en las normas del foro, las cuales aceptaste a la hora de registrarte, no lo digo yo).
Muchos usuarios leen tu tema y ni responden justamente por ese motivo, porque asumen (con motivos) que esperas una solucion hecha y no pones nada de tu parte.
Yo tambien creo eso, pero aun asi te respondo y te ayudo ¿No crees que eso sea comportarse debidamente? ¿No te parece que en vez de ofenderte y enojarte con el que te ayuda de alguna manera, una mejor forma de "comportarse" seria evaluar sus propuestas y pasar por alto aquellas palabras que no te afectan? La forma de mostrar que estoy equivocado, que te juzgue mal y que realmente hable sin saber, hubiera sido que nos mostraras solo 10 de esos ejemplos
Cita: realmente he probado mil ejemplos
con solo publicar 10 ejemplos de esos que probaste, o los links a donde los sacaste, hubiera quedado mas que claro que estaba equivocado.
¿O acaso prefieres que no responda mas? Si es la segunda opción, avísame que no sigo invirtiendo tiempo en tu causa.
La clase esa no esta muy documentada que digamos, te paso un ejemplo de uso para que te des una idea de como funciona.
Te aviso que cuando la hice estaba pensada para funcionar en un buscador de casi dos decenas de filtros generando urls amigables para cada busqueda donde habia justamente muchos parametros, en tu caso solo tienes 1 lo cual simplifica bastante las cosas.
En localhost, en la carpeta raiz, hay 4 archivos:
.htaccess
Código Apache:
Ver originalRewriteEngine on
RewriteRule ^artista/([a-zA-Z0-9_-]+)$ test.php?grupo=artista&token=$1
RewriteRule ^cancion/([a-zA-Z0-9_-]+)$ test.php?grupo=cancion&token=$1
test.php
Código PHP:
Ver original<?php
require "FriendlyUrl.php";
echo "<h1>Crear dos tokens para usar en los links</h1>";
$friendly_artista = new FriendlyUrl("artista"); // Estos nombres no tienen nada que ver con los nombres de las tablas.
$friendly_cancion = new FriendlyUrl("cancion"); // Estos nombres no tienen nada que ver con los nombres de las tablas.
// Aca agregas como primer paramero, el id del autor, es decir, el valor de la clave primaria del registro a identificar
// Como segundo parametro, el texto amigable que lo representa.
// Como tercer paramero va el orden, eso es en caso de que tengas varios datos, en tu caso solo hay uno y da lo mismo cualquier numero, pero pon uno que te acuerdes porque despues lo vas a necesitar, ej: 0.
$friendly_artista->add(345, "aitor-rewind", 0);
// Esto es lo mismo, solo que esta url amigable correspondera a una cancion en vez de a un artista.
$friendly_cancion->add(873, "la-luna-y-el-jilguero", 0);
// Generas 2 tokens amigables, uno para un artista y otro para una cancion.
// Estos token particulares, seran el mismo texto que les pasaste en el add.
// Pero solo porque es un caso basico particular.
$token_artista = $friendly_artista->generate();
$token_cancion = $friendly_cancion->generate();
echo "<a href='/artista/$token_artista'>Artista</a><br>";
echo "<a href='/cancion/$token_cancion'>Cancion</a><br>";
// Aca recibir los tokens por url y realizar el proceso inverso.
// Mostrar por pantalla
$friendly = new FriendlyUrl($_GET["grupo"]);
// Intentar hacer lo siguiente.
$friendly->decompiler($_GET["token"]);
$partes = $friendly->getParts();
// El primer subindice (0) corresponde al valor que le hallas puesto en el tercer parametro al llamar al metodo add previamente, debes usar el mismo.
// El segundo subindice (0) hace referencia al numero de parametro en esa posicion, en este caso solo hay uno y por lo tanto es 0, ya que el primer elemento de un array tiene como subindice 0.
// El tercer subindice (0) hace referencia al valor de la url que quieras obtener, si usas 0, estas obteniendo el id, si usas 1 estas obteniendo el texto.
echo "La url corresponde a ".$_GET["grupo"]." y el id del elemento de la url es: ".$partes[0][0][0]."<br>";
echo "La url corresponde a ".$_GET["grupo"]." y el texto del elemento de la url es: ".$partes[0][0][1];
}
config.php
y el cuarto es FriendlyUrl.php que te puedes descargar del repositorio.
en el ejemplo puse artistas y canciones para que se entienda un poco mas para que sirve el parámetro del constructor, puedes tener tantos grupos como quieras o incluso urls amigables diferentes para cada idioma.
Para que te des una idea de la potencia de la clase, puedes entrar a
esta web, hacer una busqueda en el formulario principal y luego ir cambiando los filtros de la barra de la izquierda, veras que los links son extremadamente amigables y contienen un monton de filtros y parametros.