Remplacer tous les liens indésirables dans une URL

WRInaute discret
Bonjour,

J'essaye de faire une modification au niveau de mon système de news sur mon site et j'aimerais que l'URL qui affiche la nouveauté soit : "nom-de-la-new-news[id-news].html (Exemple : "nouveau-jeu-sur-prizee-news30.html").

Donc, existe-t-il une solution afin de remplacer tous les caractères indésirables (tels que les guillemets, espaces, deux points) en tirets ?

Merci.
 
WRInaute passionné
Sa peut peut être faire l'affaire ...
Code:
function OptimiseUrl($chaine)
{    

    $chaine=strtolower($chaine);
    
    $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
    $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
    
    $chaine = preg_replace($accents, $sans,$chaine);  
    
    $chaine = preg_replace('#[^a-z0-9_-]#','-',$chaine);
    while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine);
    
    return $chaine; 
}
Appel de la variable
Code:
OptimiseUrl($ta_variable)
 
WRInaute accro
Suite à ce topic:
https://www.webrankinfo.com/forum/fonctions-pour-creer-slug-seo-friendly-ur ... 76-15.html

En modifiant légèrement la fonction du membre WRI "Bool":
Code:
<?php 
function slug($string, $separator = '-'){
	// remplace les caractères accentués par leur version non accentuée
	$out = strtr( $string,
	        'ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ',
	        'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy' );
	
	// remplace les caractères non standards
	$out = preg_replace(
	        array(
	            '`^[^A-Za-z0-9]+`',
	            '`[^A-Za-z0-9]+$`',
	            '`[^A-Za-z0-9]+`' ),
	        array('','',$separator),
	        $out );
	
	$out = strtolower(ltrim($out, $separator));
	return $out; 
}
?>
 
WRInaute discret
Le script de Tryan marche parfaitement ! Merci beaucoup. :)

Ça peut servir pour d'autres par contre. ;)
 
Discussions similaires
Haut