#1 23-02-2007 17:26:39

christophe
Survivors
Date d'inscription: 30-07-2005
Messages: 1553

Aide Regex

Bonjour à tous,

Dans Dotclear mais je pense que cela n'a pas d'importance d'ailleurs ... J'ai ajouté un bouton qui permet d'encadrer un ou plusieurs mots de la balise <ref>mot</ref>

Oui vous ne connaissez pas cette balise smile
Enfin pour l'instant elle ne sert à rien en l'état mais je voudrais que cela se transforme en
<a href="mot.html">mot</a>

Je pense qu'l faut utiliser les expressions régulières mais j'ai séché le cours sad

Enfin pour terminer, vous voyez ce à quoi je veux arriver, si vous avez une autre solution je suis aussi preneur !

Merci Chris


Le L'annuaire gratuit est dans son coffre fort pas loin de Twikeo ??? avec son chat

Hors ligne

 

#2 23-02-2007 17:45:03

fbparis
Survivors
Lieu: Paris
Date d'inscription: 14-07-2006
Messages: 1896
Site web

Re: Aide Regex

Je dirais que c'est quelquechose comme ça :

Code:

$text = preg_replace('#<ref>(.*?)</ref>#is','<a href="\1.html">\1</a>',$text);

Hors ligne

 

#3 23-02-2007 17:56:57

christophe
Survivors
Date d'inscription: 30-07-2005
Messages: 1553

Re: Aide Regex

Merci beaucoup, je vais essayer de me dépatouiller avec ça et voir ou je pourrais mettre ce truc dans Dotclear smile


Le L'annuaire gratuit est dans son coffre fort pas loin de Twikeo ??? avec son chat

Hors ligne

 

#4 23-02-2007 20:18:44

christophe
Survivors
Date d'inscription: 30-07-2005
Messages: 1553

Re: Aide Regex

Grâce à tes conseils, j'ai réussi à l'insérer dans DC ce qui est extrêùent Cool DONC merci beaucoup smile
Par contre est il possible de différencier \1 et \1 ?

Exemple, celui de l'URL, je voudrais lui enlever les espaces et les remplacer par des + et le mettre en minuscule !


Le L'annuaire gratuit est dans son coffre fort pas loin de Twikeo ??? avec son chat

Hors ligne

 

#5 23-02-2007 20:27:48

fbparis
Survivors
Lieu: Paris
Date d'inscription: 14-07-2006
Messages: 1896
Site web

Re: Aide Regex

mouais ca doit être possible avec un preg_replace_cb, mais la je file smile

Hors ligne

 

#6 24-02-2007 10:28:49

christophe
Survivors
Date d'inscription: 30-07-2005
Messages: 1553

Re: Aide Regex

preg_replace_cb
C'est pas une fonctin native de php ça ? J'ai rien trouvé à son sujet ?


Le L'annuaire gratuit est dans son coffre fort pas loin de Twikeo ??? avec son chat

Hors ligne

 

#7 24-02-2007 10:42:22

Phobos
'tetine'
Lieu: Marseille
Date d'inscription: 16-07-2005
Messages: 867
Site web

Re: Aide Regex

Code:

$text = preg_replace('#<ref>(.*?)</ref>#ise','<a href="'.urlencode('\\1').'>\\1</a>',$text);

ça devrait marcher wink

preg_replace_cb() c'est le diminutif de preg_replace_callback() tongue


Forum - Taggle Boost - Novetys
dispo par mail, me cherchez pas trop sur msn, irc ou Gtalk wink

Hors ligne

 

#8 24-02-2007 11:21:38

christophe
Survivors
Date d'inscription: 30-07-2005
Messages: 1553

Re: Aide Regex

ça marche pas chez moi Phobos, merci quand même

Déjà que j'ai du mal à connaître un vingtaine de fonction, si elles ont des dimunitifs c'est pas gagné smile
Du côté de preg_replace_callback() j'ai regardé mais pas persuadé car j'ai l'impression que ça va influer sur mes deux /1 alors que je veux juste une URL convenable smile


Le L'annuaire gratuit est dans son coffre fort pas loin de Twikeo ??? avec son chat

Hors ligne

 

#9 24-02-2007 12:13:00

Phobos
'tetine'
Lieu: Marseille
Date d'inscription: 16-07-2005
Messages: 867
Site web

Re: Aide Regex

Code:

function build_ref($ref) {
return '<a href="'.urlencode(strtolower($ref)).'">'.$ref.'</a>';
}

$text = preg_replace('#<ref>(.*?)</ref>#ise',"build_ref('\\1')",$text);

là c'est un peu plus bourrin mais ça marche bien, tu fais ce que tu veux pour transformer avec ta fonction build_ref

Derni�re modification par Phobos (24-02-2007 12:14:32)


Forum - Taggle Boost - Novetys
dispo par mail, me cherchez pas trop sur msn, irc ou Gtalk wink

Hors ligne

 

#10 24-02-2007 12:57:54

christophe
Survivors
Date d'inscription: 30-07-2005
Messages: 1553

Re: Aide Regex

Merci beaucoup smile

Voilà le code que j'ai obtenu si cela peut un jour servir à quelqu'un par la suite

Code:

function sans_accent($chaine)
{
   $accent  ="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ";
   $noaccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby";
   return strtr(trim($chaine),$accent,$noaccent);
} 

function build_ref($ref) {

return '<a href="'.urlencode(strtolower(sans_accent($ref))).'.html" class="ref"">'.$ref.'</a>';
}


function dcPostContent($part=0)
{
    global $news;
        
    if ($part > 0) {
        echo $news->blog->getPart($news->f('post_content'),$part);
    } else {
echo 
preg_replace('#<ref>(.*?)</ref>#ise',"build_ref('\\1')",$news->getContent());
    }
}

Le L'annuaire gratuit est dans son coffre fort pas loin de Twikeo ??? avec son chat

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 R. Andersson