SNS - Web et informatique

SNS - Web et informatique

Mercredi 28 Février 2024  
Votre adresse IP est : 34.236.134.129
Logo

PHP Function format a string in URL and remove accents - Fonction PHP pour formater une chaîne en URL et supprimer les accents

Publié le .

[EN]
I needed to rewrite article titles as URLs.
I created this function which transforms accented letters into unaccented letters and separates words with hyphens.

[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.




// ! Note: Be careful when using this function, it does not guarantee any results and may contain errors

/**
* format_in_URL( $str, $encoding='utf-8' );
*
* @param {string} $str string to transform in url string
* @param {encoding} $encoding 'utf-8'
* @return {string} string url formatted
*/
function format_in_URL( $str, $encoding='utf-8' ){


$str = trim($str);
// transform accented characters into HTML entities
$str = htmlentities($str, ENT_NOQUOTES, $encoding);

// replace HTML entities to have just the first unaccented character
// Exemple : "&ecute;" => "e", "&Ecute;" => "E", "à" => "a" ...
$str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde|uml);#',
'\1', $str);

// Replace ligatures such as : Œ, Æ ...
// Exemple "œ" => "oe"
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
// Delete everything else
$str = preg_replace('#&[^;?]+;#', "", $str);
$str = preg_replace('#\?+$#', "", $str);
$str = preg_replace('#\!{1,}#', "", $str);
$str = preg_replace('#\,{1,}#', "", $str);
$str = preg_replace("#['\s]+#", "-", $str);
$str = preg_replace('#\.{1,}#', "", $str);
$str = preg_replace('#-{2,}#', "-", $str);
$str = preg_replace('#-{1,}$#', "", $str);

return $str;

}
/**
* end format_in_URL( $str, $encoding='utf-8' );
*/

?>

// Ex: $str = "Lætitia a une poussière dans l'œuil";
// echo format_in_URL( $str, $encoding='utf-8' );
// Output : Laetitia-a-une-poussiere-dans-l-oeuil


Mots clés : PHP, formater une chaîne en URL, supprimer les accents dans une chaîne de caractères, format a string as a URL, remove accents from a string