Quelle regex pour remplacer chaîne de caractères suivante...

Angy -  
 Angy -
Bonjour,

Je débute en regex et j'ai vraiment du mal à venir à bout de l'instruction suivante : je cherche à remplacer par "TEXT" toute chaîne de caractères entre ">" et "<", à condition que cette chaîne ne contienne pas elle-même ">" ou "<"...

Exemple :

"<truc> bidule <machin>" devient "<truc>TEXT<machin>"
"<truc> <chose> <machin>" devient"<truc>TEXT<chose>TEXT<machin>"

J'ai tenté timidement et en vain la chose suivante :
chaineAEpurer.replace(/>#.*[^<>]#</i, ">TEXT<");

Mais je dois comprendre pas mal de choses de travers : /

Merci par avance d'éclairer ma lanterne :)


A voir également:

1 réponse

VlkPr3s Messages postés 235 Date d'inscription   Statut Membre Dernière intervention   130
 
Je ne sais pas si ça pourrais t'être utile mais moi j'ai une fonction qui permet de remplacé toute les occurrences de caractères spéciaux.
Je t'en fait part :)


function suppr_accents($str, $encoding='utf-8')
{
// transformer les caractères accentués en entités HTML
$str = htmlentities($str, ENT_NOQUOTES, $encoding);

// remplacer les entités HTML pour avoir juste le premier caractères non accentués
// Exemple : "&ecute;" => "e", "&Ecute;" => "E", "Ã " => "a" ...
$str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde|uml);#', '\1', $str);

// Remplacer les ligatures tel que : OE, Æ ...
// Exemple "Å"" => "oe"
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
// Supprimer tout le reste
$str = preg_replace('#&[^;]+;#', '', $str);

return $str;
}

0
Angy
 
Malheureusement je ne trouve pas vraiment ce que je recherche dans ta fonction.
Mais merci pour ta contribution VlkPr3s :)

En fait ce qui me pose le plus problème c'est comment définir en regex la condition "à condition que cette chaîne ne contienne pas elle-même ">" ou "<" " : /
0