Supprimer texte entre ... [Résolu]

Signaler
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009
-
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009
-
Salut,

J'ai un soucis avec les expressions régulieres, je cherche à remplacer un texte entre "<".$pages.">" et "</".$pages.">" par "test" (pour l'exemple) où $pages est une variable bien entendus.
En fesant des recherches, j'ai trouver ça:
    $text_total = preg_replace('#\&lt;!-- Barre droite --\&gt;(.*)\&lt;!-- Fin Barre droite --\&gt;#s', 'tests', $texte_total);
et en allant sur www.expreg.com, j'ai trouvé plein d'information mais je n'y ai pas trouvé mon bonheur. Je n'arrive pas à modifier la ligne de texte ci dessus pour l'adapter à mon exemple...

Merci d'avance

8 réponses

Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Hello,

ceci devrait rêgler ton problême:

<?php
$nString = 'bonjour<faux>valeur inchangée</faux>';
$nPattern = sprintf('#<(%s)>(.*?)</\1>#i',$pages);
$nReplace = '<\1>test</\1>';

$fResult = preg_replace($nPattern,$nReplace,$nString);
echo htmlentities($fResult);
?>
Messages postés
214
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
9 janvier 2019

le mieux c'est str_replace ( )
http://www.manuelphp.com/php/function.str-replace.php

p3x
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009

Ben c'est pas forcement le mieu, étant donné que je ne connais pas le texte à remplacer, je sais juste qu'il se situe entre les 2 balises..
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009

Euf finalement je prefere supprimer le texte entre les balises "// acceuil" et "// !acceuil" où "acceuil" est en réalité une variable $pages ...

Merci à ceux qui peuvent m'aider
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Hello,

Voici un début avec en brut le nom de la balise dont tu souhaites effacer le contenu:

<?php
$string = 'bonjour<faux>valeur inchangée</faux>';
$fResult = preg_replace('#<(accueil)>(.*?)</\1>#i', '<\1>test</\1>', $string);
echo htmlentities($fResult);
?>
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009

Merci bien, ça m'aide pas mal sauf que lorsque je veux mettre une variable à la place de "acceuil" ben ça ne fonctionne pas...
<?php
$string = 'bonjour<faux>valeur inchangée</faux>';
$pages = "acceuil"
$fResult = preg_replace('#<('.$pages.')>(.*?)</\1>#i', '<\1>test</\1>', $string);
echo htmlentities($fResult);
?>
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009

Merci bien ça fonctionne pour mon exemple, sauf quand $nstring est multiligne, exemple:
$nString = 'bonjour
comment va tu?
bien, cool<faux>valeur inchangée</faux>';

Donc je suis en train de cherche comment résoudre ça, mais si vous avez des idées ;)
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009

Ah, en fait c'est bon j'ai trouver, c'est tout con, avec un nl2br, ça ne fonctionnait pas mais avec :
 $nString = str_replace('
','
', $nString);
pas de soucis !

Encore merci pour ta précieuse aide [auteurdetail.aspx?ID=234428 DiGhan] !