php éliminer une chaine de caracteres dans une autre

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

webmasterdemonsite
WRInaute accro
WRInaute accro
 
Messages: 1086
Inscription: Ven Aoû 31, 2007 23:47

php éliminer une chaine de caracteres dans une autre

Message le Sam Oct 25, 2008 16:09

bonjour

je sais que ce n'ai pas un forum sur le php, mais je ne vais pas m'inscire sur un forum php pour si peu (dommage pour eux :oops: )

j'ai une chaine $chaine

je voudrais éliminer de $chaine tout ce qui ce trouve entre le caractére [ et le caractére ]

exemple:

$chaine="[url]Une_Url_Quelquonque[/url]"

devient:

$chaine="Une_Url_Quelquonque"


ô communauté WRI tout puissante, mais quelle est donc cette fonction php ésotérique qui me permet d'atteindre ce but ultime et suprême ?


hebmaster
WRInaute accro
WRInaute accro
 
Messages: 1056
Inscription: Jeu Déc 22, 2005 12:35

Message le Sam Oct 25, 2008 16:14

utilise http://www.php.net/strtr si tu connais exactement ce que tu veux supprimer de ta chaine

Si non trouve la position du premier "[" et puis de "]" avec la fonction strpos
et supprime tout ces qui se trouve entre ces deux positions(je sais pas avec quelle fonction...)


OTP
Modérateur
Modérateur
 
Messages: 13030
Inscription: Ven Déc 16, 2005 22:41

Message le Sam Oct 25, 2008 17:07



Seraph
WRInaute impliqué
WRInaute impliqué
 
Messages: 398
Inscription: Dim Avr 02, 2006 22:35

Message le Sam Oct 25, 2008 17:18

Je te conseille de chercher des fonctions utilisant les expressions régulières... ce sera bien plus simple et souple.


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Sam Oct 25, 2008 18:19

Seraph a écrit:Je te conseille de chercher des fonctions utilisant les expressions régulières... ce sera bien plus simple et souple.


Tout à fait, c'est comme cela que sont d'ailleurs traités les langages dits bbcode

webmasterdemonsite
WRInaute accro
WRInaute accro
 
Messages: 1086
Inscription: Ven Aoû 31, 2007 23:47

Message le Sam Oct 25, 2008 23:32

merci à vous

je vais étudier les regex alors

j'ai deja utiliser des regex dans .htacces mais betement je ne savais pas que l'on pouvais l'appliquer aux variables php :oops:

webmasterdemonsite
WRInaute accro
WRInaute accro
 
Messages: 1086
Inscription: Ven Aoû 31, 2007 23:47

Message le Dim Oct 26, 2008 13:43

allez, je poste la réponse à ma question, si ca peut aider quelqu'un:

Code: Tout sélectionner
preg_replace('#\[(.*)\](.*)\[(.*)\]#U', '$2', $texte)


explication de #\[(.*)\](.*)\[(.*)\]#U

\[ c'est le caractère [ échapé
(.*) c'est n'ilmporte quel caratère
\] c'est le caractère ] échapé
U pour dire au regex de s'arrêter à la première occurence
$2 c'est ce qui est dans la deuxième paranthèse du regex

donc ca fait un truc du genre:

[bbcode]blablablablabla[bbcode] est transformé en blablablablabla


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3337
Inscription: Mar Nov 16, 2004 18:27

Re: php éliminer une chaine de caracteres dans une autre

Message le Dim Oct 26, 2008 16:50

webmasterdemonsite a écrit:bonjour

je sais que ce n'ai pas un forum sur le php, mais je ne vais pas m'inscire sur un forum php pour si peu (dommage pour eux :oops: )


:mrgreen: :mrgreen:


(.*) c'est n'ilmporte quel caratère


c'est sans compter les retours chariots

il faut un ? dans le masque principale pour éviter d'être victime d'une capture paresseuse à cause de ces retours chariots

Code: Tout sélectionner
preg_replace('#\[(.*)\](.*?)\[(.*)\]#U', '$2', $texte);


et comme on est royal on va s'eviter 3 captures quand 1 seule suffit

Code: Tout sélectionner
preg_replace('#\[.*\](.*?)\[.*\]#U', '$1', $texte);


++

webmasterdemonsite
WRInaute accro
WRInaute accro
 
Messages: 1086
Inscription: Ven Aoû 31, 2007 23:47

Re: php éliminer une chaine de caracteres dans une autre

Message le Dim Oct 26, 2008 17:49

Merci KOogar

les regex n'ont pas l'air d'avoir de secrets pour toi :wink:

KOogar a écrit:
(.*) c'est n'ilmporte quel caratère


c'est sans compter les retours chariots

il faut un ? dans le masque principale pour éviter d'être victime d'une capture paresseuse à cause de ces retours chariots

Code: Tout sélectionner
preg_replace('#\[(.*)\](.*?)\[(.*)\]#U', '$2', $texte);


et comme on est royal on va s'eviter 3 captures quand 1 seule suffit

Code: Tout sélectionner
preg_replace('#\[.*\](.*?)\[.*\]#U', '$1', $texte);


++


je viens d'essayer mais ca ne me fais pas le même résultat que mon bout de code:

Code: Tout sélectionner

         $texte = strip_tags ($texte);
         $texte = preg_replace('#\s#U', ' ', $texte);
         $texte = preg_replace('#\[(.*)\](.*)\[(.*)\]#U', '$2', $texte);


Le but étant que $texte est le contenu d'un post de mon forum, j'ôte les tags html, puis les retours chariot et retour à la ligne et enfin les balises bbcode

y a peut être moyen de faire mieux que mon bout de code, mais vous allez vous moquer de moi, cela m'a pris la matinée :oops: un dimanche en plus 8O

A+


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3337
Inscription: Mar Nov 16, 2004 18:27

Re: php éliminer une chaine de caracteres dans une autre

Message le Lun Oct 27, 2008 7:50

webmasterdemonsite a écrit: cela m'a pris la matinée :oops: un dimanche en plus 8O


cela m'a pris 2 minutes et 10 ans


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités