Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-01-2009 20:36:22

Ultimata
Membre
Date d'inscription: 15-01-2009
Messages: 31

Fonctions pour Url et référencement

Bonjour,

Je cherche actuellement une fonction qui serais bien sur utilisé dans zend mais dans le but d'optimiser une url (pour le référencement).

J'aimerais pouvoir utiliser le titre d'une news en adresse (juste pour l'utilité du référencement, aucunes utilité pour zend).

Exemple :
Titre de la news : Problème aérien, amerrissage réussi aux états-unis
Url utilisé : site.com/news/id/1/Probleme-aerien-amerrissage-reussi-aux-etats-unis/


En gros : une fonction qui modifie les caractères spéciaux inutilisable dans les adresse (les espaces, accents etc).


Merci

EDIT admin: merci de mettre des titres clairs

Dernière modification par Mr.MoOx (19-01-2009 09:48:46)

Hors ligne

 

#2 16-01-2009 22:18:22

neojick
Membre
Date d'inscription: 13-04-2008
Messages: 223
Site web

Re: Fonctions pour Url et référencement

Avec les fonctions ci-dessous, tu aura ton bonheur. Le lien ici est généré avec cette fonction : http://www.planete-asm.fr/breve/1660-cl … -club.html

//$url = urlize($titre);

function urlize($url) {
        $search = array('/[^a-z0-9]/', '/--+/', '/^-+/', '/-+$/' );
        $replace = array( '-', '-', '', '');
        return preg_replace($search, $replace, Fonctions::utf2ascii($url));
    }   

     function utf2ascii($string) {
       
        $string = str_replace("â","a", $string);
        $string = str_replace("à","a", $string);
        $string = str_replace("ä","a", $string);
        $string = str_replace("è","e", $string);
        $string = str_replace("é","e", $string);
        $string = str_replace("ë","e", $string);
        $string = str_replace("ê","e", $string);
        $string = str_replace("î","i", $string);
        $string = str_replace("ï","i", $string);
        $string = str_replace("ö","o", $string);
        $string = str_replace("ô","o", $string);
        $string = str_replace("û","u", $string);
        $string = str_replace("ü","u", $string);
        $string = str_replace("ù","u", $string);
       
        $string = str_replace("Â","a", $string);
        $string = str_replace("À","a", $string);
        $string = str_replace("Ä","a", $string);
        $string = str_replace("È","e", $string);
        $string = str_replace("É","e", $string);
        $string = str_replace("Ë","e", $string);
        $string = str_replace("Ê","e", $string);
        $string = str_replace("Î","i", $string);
        $string = str_replace("Ï","i", $string);
        $string = str_replace("Ö","o", $string);
        $string = str_replace("Ô","o", $string);
        $string = str_replace("Û","u", $string);
        $string = str_replace("Ü","u", $string);
        $string = str_replace("Ù","u", $string);
       
        $string = str_replace("ç","c", $string);
       
        $iso88591  = "\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE6\\xE7";
        $iso88591 .= "\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF";
        $iso88591 .= "\\xF0\\xF1\\xF2\\xF3\\xF4\\xF5\\xF6\\xF7";
        $iso88591 .= "\\xF8\\xF9\\xFA\\xFB\\xFC\\xFD\\xFE\\xFF";
        $ascii = "aaaaaaaceeeeiiiidnooooooouuuuxyy";
        return mb_strtolower(utf8_decode($string), 'ISO-8859-1');
    }

Dernière modification par neojick (16-01-2009 22:19:44)


Chan IRC de ZF en français : zftalk-fr

Hors ligne

 

#3 16-01-2009 23:35:00

etaty
Membre
Date d'inscription: 16-10-2008
Messages: 49

Re: Fonctions pour Url et référencement

Je pense qu'il est plus performant de faire 1 seul appel à str_replace() avec des array en paramètre wink

Hors ligne

 

#4 17-01-2009 05:16:47

Ultimata
Membre
Date d'inscription: 15-01-2009
Messages: 31

Re: Fonctions pour Url et référencement

Génial ! Merci ta fonction me mache le travail, je vais essayé de la ré-ecrire avec des array pour la reposté ici (si d'autres personnes ont besoins).

Merci bien

Hors ligne

 

#5 17-01-2009 10:01:13

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Fonctions pour Url et référencement

Salut,

Je te file un morceau d'un de mes filtres, si ça peut te guider.

Code:

<?php
Zend_Loader::loadClass('Zend_Filter_Interface');
/**
 * Classe de filtres sur les chaines de caractères
 * (url, transformation de chaines en images, remplacement
 * de valeur, etc.)
 *
 * @category Tight
 * @package Tight_Filter
 * @author Benjamin Dulau
 */
class Tight_Filter_StringUtil implements Zend_Filter_Interface
{
    /**
     * Obligatoire Zend_Filter_Interface
     * 
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
            
    }
    
    /**
     * Nettoie la chaine passée en paramètres.
     * Remplace les caractères accentués en non accentués,
     * passe la chaine en minuscule, remplace les espaces
     * par des tirets et supprime les caractères inutiles
     *
     * @param  string $p_value
     * @param  string $p_encoding 
     * @return string $r_out
     */
    public function clean($p_value, $p_encoding = null)
    {        
        /*
         * Expression régulière permettant le changement des caractères accentués en
         * caractères non accentués.
         */        
        $search = array ('@[éèêëÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i',
        '@[ç]@i','@[^a-zA-Z0-9]@');
        $replace = array ('e','a','i','u','o','c',' ');
        $r_out =  preg_replace($search, $replace, $p_value);
        
        /*
         * Passe tout en minuscule
         */
        Zend_loader::loadClass('Zend_Filter_StringToLower');
        $z_filter = new Zend_Filter_StringToLower();
        $z_filter->setEncoding($p_encoding);                
        $r_out = $z_filter->filter($r_out); 
        
        /*
         * Remplace les espaces par des tirets
         */
        $r_out = str_replace(" ",'-',$r_out);
        
        /*
         * Supprime tous les caractères inutiles
         */
        $r_out = preg_replace('#\-+#','-',$r_out);
        $r_out = preg_replace('#([-]+)#','-',$r_out);
        
        /*
         * Remplace les espaces restants par des tirets
         */
        Zend_Filter::get($r_out, 'StringTrim', array('-'));

        return $r_out;
    }
}

A+ benjamin


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#6 17-01-2009 21:34:41

Ultimata
Membre
Date d'inscription: 15-01-2009
Messages: 31

Re: Fonctions pour Url et référencement

J'ai un petit soucis encore relatif aux url...

Quand je veux faire un lien de retour à l'accueil ou à une autre page, il garde les autres données dans l'url (titre, id etc ..)

Ex :
<?php echo $this->url(array('controller'=>'actu',
    'action'=>'supprimer', 'id'=>$actu->news_id));?>

Si la page était : site.com/news/id/1/LoL-le-titre
Le lien sera : site.com/actu/supprimer/1/LoL-le-titre  (en gros le titre à été concervé, ainsi que l'id).

J'aimerais que ces infos ne soit pas transféré en get dans l'url, comment faire pour "reset" les informations déjà obtenu?

Mercii

Hors ligne

 

#7 17-01-2009 21:41:02

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Fonctions pour Url et référencement

Bonsoir,

Cette question est décidément très redondante smile

http://www.z-f.fr/forum/viewtopic.php?id=1663


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#8 18-01-2009 09:48:03

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Fonctions pour Url et référencement

Hello,

@Delprog : je crois que nous ne sommes pas autorisés à dire RTFM sur ce forum mais parfois ça démange big_smile

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#9 18-01-2009 09:54:07

neojick
Membre
Date d'inscription: 13-04-2008
Messages: 223
Site web

Re: Fonctions pour Url et référencement

On est dimanche, tu peux te lâcher :p


Chan IRC de ZF en français : zftalk-fr

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages