Sep 29
Petit update de la fonction urlize postée précédemment.
function urlize($string){
$find = array(
'/[^A-Za-z0-9ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]/' #alphanum + accents
,'/[-]+/' # multi -
,'/(^-)/' # - as begin
,'/(-$)/' # - as end
);
$repl = array('-','-','','');
return preg_replace($find, $repl, $string);
}



Publié le 21/09/2009 à 2:54
Bonjour,
J’ai essayé d’adapter votre code à un autre trouvé sur le net (cf: http://pwet.fr/blog/generer_des_url_significatives_en_php) mais je n’arrive pas à obtenir les tirets entre les mots.
Exemple avec le mot : “postée précédemment” j’obtiens avec le code ci-dessous “postée précédemment” au lieu de “postée-précédemment”.
Voici le code :
class MonApplicationTools
{
const LOCALE = ‘fr_FR.UTF-8′;
static function initLocale( $locale = self::LOCALE )
{
setlocale( LC_ALL, $locale );
}
static function URLize($str)
{
$pattern = array(
‘/[^A-Za-z0-9ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]/’ #alphanum + accents
,’/[-]+/’ # multi -
,’/(^-)/’ # - as begin
,’/(-$)/’ # - as end
);
$replacement = array(’-',’-',”,”);
return preg_replace( $pattern, $replacement, strtolower($str) , PHP_EOL);
}
}
Merci d’avance pour votre aide.
Bien cordialement,
Publié le 22/09/2009 à 20:28
@benjouke: à quoi correspond ton paramètre “PHP_EOL” dans ta fonction preg_replace?
Publié le 22/09/2009 à 20:44
Je l’ai ajouté pour avoir les accents.