2009-09-16 5 views
2

Je suis en train de programmer un blog et je veux que les URI soient le titre comme le titre de la question ici dans stackoverflow ou comme wordpress.
Quelles sont les règles d'assainissement d'une URI?
Y at-il un code déjà fait en PHP qui fait cela?Comment désinfecter les URI de titre avec PHP?

Merci à l'avance,
Omer

Répondre

2

Généralement, vous voulez que votre URL ne contienne que 0-9 et a-z, et assurez-vous que tout est en minuscules. Remplacez les espaces par des tirets (-) et dépouillez le reste du charabia.

Donc, à peu près tout a compris.

6

Cela pourrait être le plus court chemin pour remplacer un caractère non alphanumérique avec un seul trait d'union:

trim(preg_replace('/[^a-z0-9-]+/', '-', strtolower($str)), '-') 
+0

, cela parfaitement le travail – jck

6

Here's how drupal does it.

En cas de site tombe en panne: merci

<?php 
function pathauto_cleanstring($string) 
{ 
    $url = $string; 
    $url = preg_replace('~[^\\pL0-9_]+~u', '-', $url); // substitutes anything but letters, numbers and '_' with separator 
    $url = trim($url, "-"); 
    $url = iconv("utf-8", "us-ascii//TRANSLIT", $url); // TRANSLIT does the whole job 
    $url = strtolower($url); 
    $url = preg_replace('~[^-a-z0-9_]+~', '', $url); // keep only letters, numbers, '_' and separator 
    return $url; 
} 
+0

Cela a fonctionné comme un charme! –

+0

Vous souhaiterez peut-être poster une réponse complète plutôt qu'un simple lien au cas où la page liée tombe en panne. – karancan

Questions connexes