Question

J'ai fait une limace avec tableau de bord pour mes histoires URL telles que:

avec limace Lecture d'enregistrements au lieu d'ID

Ceci est mon code pour créer limace:

function Slugit($title) {
    $title = strip_tags($title);
    // Preserve escaped octets.
    $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
    // Remove percent signs that are not part of an octet.
    $title = str_replace('%', '', $title);
    // Restore octets.
    $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);


    $title = remove_accents($title);
    if (seems_utf8($title)) {
        if (function_exists('mb_strtolower')) {
            $title = mb_strtolower($title, 'UTF-8');
        }
        $title = utf8_uri_encode($title, 500);
    }

    $title = strtolower($title);
    $title = preg_replace('/&.+?;/', '', $title); // kill entities
    $title = str_replace('.', '-', $title);
    $title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
    $title = preg_replace('/\s+/', '-', $title);
    $title = preg_replace('|-+|', '-', $title);
    $title = trim($title, '-');


    return $title;
}

Comme vous pouvez le voir tirets, jusqu'à ici, tout va bien. Mais quand je clique sur le lien, il ne peut pas ouvrir et trouver ma base de données comme il est enregistré dans des conditions normales et sans tirets.

J'ai donc écrit quelque chose pour enlever des tirets:

$string = str_replace('-', ' ', $string);

Mais quand il y a ? ou . dans l'URL, il ne peut pas afficher!

Toute aide pour récupérer retour l'URL d'origine?

Était-ce utile?

La solution

Lorsque vous avez une URL comme celle-ci:

https://stackoverflow.com/questions/2647789/problem-in-displaying-a-slug-with-dash

La partie problem-in-displaying-a-slug-with-dash est pas tout à fait important: il de juste Nice:

  • pour afficher
  • pour les utilisateurs à lire, et voir ce qui est de la question sur
  • pour le moteur de recherche, en tant que mécanisme de référencement.


Qu'est-ce qui est vraiment important , dans cette URL, est la partie 2647789 : il est identifiant de la question dans la base de données - dire qu'elle est partie de l'URL qui est utilisé pour charger la question.

Cela signifie qu'il n'y a pas besoin de convertir le pion à ce qui a été d'abord tapé par l'utilisateur: seule chose qui importe est que vous passez l'identifiant de vos données dans chaque URL, et l'utiliser pour trouver votre dos de données


Et, si vous voulez une sorte de preuve: essayez d'aller problème dans l'affichage d'une limace d'URL avec tableau de bord sans la limace: vous » verrez que vos charges question très bien; -)

Autres conseils

Si vous ne disposez pas d'un identifiant numérique et utilisez simplement le pion pour identifier l'enregistrement dans votre base de données. Ensuite, vous pouvez simplement stocker la limace dans la base de données aussi, et la requête avec cette limace.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top