Problème avec une expression régulière ereg_replace

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par julien__, 9 Août 2010.

  1. julien__
    julien__ WRInaute occasionnel
    Inscrit:
    28 Décembre 2006
    Messages:
    268
    J'aime reçus:
    0
    Bonjour, j'ai un problème avec une expression régulière que je n'arrive pas à mettre sur pieds...

    Le but :

    Transformer dans un texte des noms en liens.

    Le texte :

    Ceci est un texte d'exemple avec des noms propres, comme [p]Sébastien Rittout[/p] ou d'autres qui peuvent apparaître n'importe ou dans le texte [p]José Rigou[/p].

    Les noms de personnes sont encadrée par des balises genre BBCode, tous les nom ont la balise [p] au début et la balise [/p] pour les terminer.

    Voilà la transformation que je devrais arriver à faire :

    [p]Jean-Paul Nicod[/p]

    en

    <a href="http://www.nomdedomaine.com/personne,jean-paul_nicod">Jean-Paul Nicod</a>

    et ceci bien sûr avec n'importe quel nom, et toutes les occurrences dans le texte.

    Pour remplacer les majuscules et les caractères spéciaux par leur équivalent, je me sert de cette fonction.

    $chaine = strtolower(strtr($nom,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ' ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn-_"));

    cela a pour effet de mettre le nom en minuscule et de remplacer les caractères spéciaux pour l'url rewriting.

    Maintenant le but, c'est d'avoir une fonction, capable :

    1. de mettre en miniuscule
    2. de remplacer les caractères spéciaux par leur équivalent é en e etc...
    3. et de transformer en lien

    J'ai pensé à ereg_replace

    Mais les caractères [] sont utilisés dans les expressions régulières pour délimiter des suites de caractères, il faut en plus y ajouter des caractères d'échappement. Je ne m'en sors pas!!!

    Si quelqu'un a la science infuse des expressions régulières, cela m'aiderait grandement...
     
  2. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    722
    J'aime reçus:
    0
    Essaye ça :
    Code:
    $str = preg_replace(
    	'`\[p\](.+)\[\/p\]`Ue', 
    	'"<a href=\"http://www.nomdedomaine.com/personne," . to_permalink("\\1") . "\">\\1</a>"',
    	$str
    );
    
    function to_permalink($str)
    {
    	if($str !== mb_convert_encoding( mb_convert_encoding($str, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32') )
    		$str = mb_convert_encoding($str, 'UTF-8');
    	$str = htmlentities($str, ENT_NOQUOTES, 'UTF-8');
    	$str = preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', '\\1', $str);
    	$str = html_entity_decode($str, ENT_NOQUOTES, 'UTF-8');
    	$str = preg_replace(array('`[^a-z0-9]`i','`[_]+`'), '_', $str);
    	$str = strtolower( trim($str, '_') );
    	return $str;
    }
    
    ereg_replace est déprécié, autant directement utiliser preg_replace.
    Le code ci-dessus utilise ma 'tite fonction to_permalink() légèrement modifiée pour convenir à ton besoin.

    J'espère que ca conviendra ;)
     
  3. julien__
    julien__ WRInaute occasionnel
    Inscrit:
    28 Décembre 2006
    Messages:
    268
    J'aime reçus:
    0
    Si ça me convient??? C'est la classe :D ou plutôt devrais-je dire la fonction!

    Je suis épaté ça marche vite, bien et sans bug, j'ai déjà testé avec tous les cas de figure et caractères spéciaux...

    Un très très grand merci, cela faisait un moment déjà que je devais résoudre ce problème pour pouvoir avancer mieux et bien dans mes projets...

    Tu dois avoir beaucoup d'amis? :)
     
  4. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    722
    J'aime reçus:
    0
    Pas de quoi, on est la pour s'entraider :wink:
    Content que ça te convienne :D
     
Chargement...
Similar Threads - Problème expression régulière Forum Date
problème avec expression regulière en java Développement d'un site Web ou d'une appli mobile 21 Août 2015
Problème expression régulière Développement d'un site Web ou d'une appli mobile 1 Avril 2011
Problème pour définir une expression régulière. Développement d'un site Web ou d'une appli mobile 11 Juin 2010
Problème pour définir une expression régulière. Développement d'un site Web ou d'une appli mobile 8 Juin 2010
probleme de slash dans une expression reguliere Développement d'un site Web ou d'une appli mobile 21 Mars 2010
probleme dans mon expression reguliere pour le rewriting URL Rewriting et .htaccess 14 Février 2008
[Résolu] Problème Expressions régulières Développement d'un site Web ou d'une appli mobile 29 Octobre 2007
Petit problème avec un expression régulière. URL Rewriting et .htaccess 13 Avril 2006
problème expression régulière URL Rewriting et .htaccess 8 Janvier 2006
probleme d'Expression reguliere Administration d'un site Web 31 Août 2004
Probleme avec une expression regulière Administration d'un site Web 9 Avril 2004
Problème d'expressions régulières Administration d'un site Web 23 Mars 2004
Problème de référencement sur expression clé principale Problèmes de référencement spécifiques à vos sites 18 Octobre 2009
Problème d'expression rationnelle pour vérifier un email Développement d'un site Web ou d'une appli mobile 22 Avril 2006
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022