Expressions régulières

Résolu
cs_darkduck Messages postés 138 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 29 février 2008 - 27 oct. 2006 à 11:22
cs_darkduck Messages postés 138 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 29 février 2008 - 30 oct. 2006 à 09:46
Salut,

J'aimerai virer les - entre chevrons grace à une expression régulière.
Je m'explique :

<mon-texte>test-test</mon-texte><mon-joli-texte>y-a-t-il quelqu'un</mon-joli-texte>

doit devenir :

<montexte>test-test</montexte><monjolitexte>y-a-t-il quelqu'un</monjolitexte>

Vous auriez une solution svp ?

5 réponses

audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
28 oct. 2006 à 17:49
Je ne sais pas si c'est propre mais cela à l'air rapide : "
<?php
$string = '<mon-texte>test-test</mon-texte><mon-joli-texte>y-a-t-il quelqu\'un</mon-joli-texte>';
preg_match_all('`<(.+?)>(.+?)<(.+?)>`sim',$string,$test);
$test[1] = str_replace('-','',$test[1]);
$test[3] = str_replace('-','',$test[3]);
$i =0;
$string = '';
while(isset($test[1][$i])) {
    $string .= '<'.$test[1][$i].'>'.$test[2][$i].'<'.$test[3][$i].'>';
    $i++;
}
echo htmlentities($string),'
';
?>
"

For every choice, a consequence (Fable)
3
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
27 oct. 2006 à 11:36
Salut,
Essaye ceci : "
<?php
$string = '<mon-texte>test-test</mon-texte><mon-joli-texte>y-a-t-il quelqu\'un</mon-joli-texte>';
echo htmlentities($string),'
';
$string = preg_replace('`<([/])?([[:alnum:]]+)([-]([[:alnum:]]+))*>`sim','<$1$2$4>',$string);// L'expression régulière
echo htmlentities($string);
?>
"

For every choice, a consequence (Fable)
0
cs_darkduck Messages postés 138 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 29 février 2008 1
27 oct. 2006 à 11:45
Merci pour ta réponse,

On s'approche de la solution mais j'obtiens :

<montexte>test-test</montexte><montexte>y-a-t-il quelqu'un</montexte>

au lieu de :

<montexte>test-test</montexte><monjolitexte>y-a-t-il quelqu'un</monjolitexte>

De plus il peut y avoir un nombre indéfini de - (il peut ne pas y en avoir tout comme il peut y en avoir plusieurs) dans les chevrons <>.

Il faudrait donc une fonction générique
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 oct. 2006 à 13:13
Hello,

à l'arrache, pas très joli, mais bon... :

<?php
$sChaine = '<mon-texte>test-test</mon-texte><mon-joli-texte>y-a-t-il quelqu\'un</mon-joli-texte>';
$sReplaced = preg_replace ('/(<\/?)(\w+)([^>]*>)/e',"''.str_replace('-', '', '\\1\\2\\3').''", $sChaine);
echo htmlentities ($sReplaced);
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_darkduck Messages postés 138 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 29 février 2008 1
30 oct. 2006 à 09:46
Nickel, merci beaucoup
0
Rejoignez-nous