Je développe une méthode pour transformer une chaine de caractères en url de type ma-chaine-de-caractere-transforme.html.
Par contre, il m arrive d avoir un - ou -- en fin de chaine (juste avant le .html) et j ai quelque soucis à l enlever.
EDIT : En modifiant la methode, j ai presque resolu mon soucis. Mais il reste un - en cas de recursivité
Methode :
class test{
/** autre methodes **/
function _creationURL($intQuest){
//Mise en minuscule de l intitule de la question
$urlQuest = strtolower($intQuest);
//Remplacement des caracteres speciaux
$urlQuest = strtr($urlQuest, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäå@çèéêëìíîïðòóôõöùúûüýÿ+!?', 'aaaaaaceeeeiiiiooooouuuuyaaaaaaaceeeeiiiioooooouuuuyy---');
//Enlevement des espaces, des " et ' remplacés par des -
$urlQuest = str_replace(" ","-",$urlQuest);
$urlQuest = str_replace('"','',$urlQuest);
//En cas de ---
$urlQuest = str_replace("---","-",$urlQuest);
//Si le dernier caractere de la chaine est un -, on l enleve
echo '<br />la chaine avant enlevement du dernier caractere : '.$urlQuest.'| Fin<br />';
if(substr($urlQuest,strlen($urlQuest)-1,strlen($urlQuest)) == "-"){
$urlQuest = substr($urlQuest,0,strlen($urlQuest)-1);
self::_creationURL($urlQuest); //Recursivité tant que la fin de l url a un -
$urlQuest = $urlQuest.'.html';
}else{
//rajout de .html à la fin
$urlQuest = $urlQuest.'.html';
}
echo '<br />URL finale : '.$urlQuest;
return $urlQuest;
}
}
$otest = new test();
$q = 'Pourquoi A fE D a ?';
echo 'Question : '.$q.'<br /><br />';
$otest->_creationURL($q);
et ça affiche :
Je sais que c est un ptit truc à la con mais je le trouve pas ^^. Merci d avanceQuestion : Pourquoi A fE D a ?
la chaine avant enlevement du dernier caractere : pourquoi-a-fe-d-a--| Fin
la chaine avant enlevement du dernier caractere : pourquoi-a-fe-d-a-| Fin
la chaine avant enlevement du dernier caractere : pourquoi-a-fe-d-a| Fin
URL finale : pourquoi-a-fe-d-a.html
URL finale : pourquoi-a-fe-d-a.html
URL finale : pourquoi-a-fe-d-a-.html
EDIT :
Au final j ai reussi
static function _creationURL($intQuest){
//Mise en minuscule de l intitule de la question
$urlQuest = strtolower($intQuest);
//Remplacement des caracteres speciaux
$urlQuest = strtr($urlQuest, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäå@çèéêëìíîïðòóôõöùúûüýÿ+!?', 'aaaaaaceeeeiiiiooooouuuuyaaaaaaaceeeeiiiioooooouuuuyy---');
//Enlevement des espaces, des " et ' remplacés par des -
$urlQuest = str_replace(" ","-",$urlQuest);
$urlQuest = str_replace('"','',$urlQuest);
//En cas de ---
$urlQuest = str_replace("---","-",$urlQuest);
//Si le dernier caractere de la chaine est un -, on l enleve
//echo '<br />la chaine avant enlevement du dernier caractere : '.$urlQuest.'| Fin<br />';
while(substr($urlQuest,strlen($urlQuest)-1,strlen($urlQuest)) == "-"){
$urlQuest = substr($urlQuest,0,strlen($urlQuest)-1);
self::_creationURL($urlQuest); //Recursivité tant que la fin de l url a un -
}
return $urlQuest.'.html';
}//fin methode