PHP Function format a string in URL and remove accents - PHP Fonction formater une chaîne en URL et supprimer les accents
Publié le .I needed to rewrite article titles as URLs.
I created this function which transforms accented letters into unaccented letters and separates words with hyphens.
</span><span lang="fr">
J'ai eu besoin de réécrire des titres d'articles sous forme d'URL.
J'ai crée cette fonction qui transforme les lettres accentuées en lettres non-accentuées et qui sépare les mots par des tirets.</span>
</p>
<code><?php
/**
* function suppr_accents( $str, $encoding='utf-8' );
*
* @param {str} $str string to transform in url string
* @param {encoding} 'utf-8'
* @return {type} url formatted
*/
suppr_accents( $str ){
$str = trim($str);
// transformer les caractères accentués en entités HTML
$str = htmlentities($str, ENT_NOQUOTES, $encoding);
// Remplacer les ligatures tel que : , Æ ...
// Exemple "œ" => "oe"
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
// Supprimer tout le reste
$str = preg_replace('#&[^;?]+;#', "", $str);
$str = preg_replace('#\?+$#', "", $str);
$str = preg_replace('#\!{1,}#', "", $str); // new add
$str = preg_replace('#\,{1,}#', "", $str); // new add
$str = preg_replace('/ - {1,1}/', "---", $str);
$str = preg_replace('/-{4,}/', "-", $str);
$str = preg_replace("#['\s]+#", "-", $str);
$str = preg_replace('/\.{1,}/', "-", $str);
return $str;
}
/**
* suppr_accents($str, $encoding='utf-8');
*/
}
// end function tools
?>
</code>