Suppression dans une chaine [Résolu]

Signaler
Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
-
Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
-
salut à tous !

voila mon souci :
j'ai dans une varable PHP appelée $chaine la chaine suivante : "aaaa<!-- DEBUT //-->bbbb<!-- FIN //-->cccc"

ce que je souhaiterai c'est refaire une chaine sans ce qui se trouve entre les 2 balises <!-- DEBUT //--> et <!-- FIN //--> pour dans mon exemple donner : "aaaacccc"

merci pour vos reponses !

11 réponses

Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
1
bon je vais donner ma soluce :

$debut = '<!-- DEBUT //-->';
$fin = '<!-- FIN //-->';

$pos_debut = strpos($chaine, $debut);
$pos_fin = strpos($chaine, $fin);

$chaine1 = substr($chaine,0,$pos_debut-1);
$chaine2 = substr($chaine,$pos_fin+14,(strlen($chaine)-$pos_fin));

$chaine= $chaine1.$chaine2;

si d'autres personnes ont une meilleure idée je suis preneur ...
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
$p1=strpos($chaine,'<');
$p2=strpos($chaine,'>');
$p3=strpos($chaine,'>',$p2+1);

$chaine1=substr($chaine,0,$p1-1);
$chaine2=substr($chaine,$p3+1);
$chainefinale=$chaine1.$chaine2;

en gros
il y a peut être plus simple
Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
1
ouai ca marche avec mon exemple mais ce n'était qu'un exemple ...
en réalité ma chaine est du code HTML alors chercher "<" et ">" ca ne fonctionne plus
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
oui mais il faut bien chercher quelque chose pour extraire

$debut = '<!-- DEBUT //-->';
$fin = '<!-- FIN //-->';

la tu charges bien en dur, non ?
Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
1
non je realise une fonction

$chaine ='............................................';
$new = fonction($chaine);

et ma fonction retourne la chaine sans ce qu'il y entre a mes 2 balises

donc il peut y avoir n'importe quoi avant <!-- DEBUT //-->, entre <!-- DEBUT //--> et <!-- FIN //-->, et apres <!-- FIN //-->.
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
ok mais alors, si ta chaine c'est

aaaaaaaa+aaaaaaaa+ccccccc+cccccccc

tu récupères comment la première et la dernière partie ??
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
tu dois pouvoir récupérer la position du premier '<' et celle du dernier '>'
je ne comprends pas bien
Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
1
hmm on se comprend pas je crois

voila réellement ce qu'est ma chaine :

$chaine = '
titre, ----

<!-- DEBUT //-->
----
en tete,
<!-- FIN //-->
----
contenu, ----

----
pied de page

';

Donc en final je souhaite :
$new_chaine = '
titre, ----

----
contenu, ----

----
pied de page

';
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
ok je comprends (pas evident)



tu peux scanner le premier '<!' et le dernier '->'



non ?
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
c'est quoi le but, virer des commentaires ?
Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
1
non c'est virer ce qu'il y a entre les 2 balises <!-- DEBUT //--> et <!-- FIN //-->