2010-11-14 9 views
0

Essayer de supprimer certains BBCode d'un texte. Je voudrais supprimer tout entre un [img] et [/ img], en utilisant une fonction preg_replace PHP, par exemple:Aide à l'expression preg_replace requise pour PHP

Here is my image[img]http://www.abc.com/image1.jpg[/img] and more text 

Match: [img] suivi d'un nombre de caractères suivis par [/ img ]

Résultat:

Here is my image and more text 

Merci.

+0

Eh bien, ça ne fonctionne pas . J'ai essayé/\\ [\ i \ m \ g \\]/et cela semblait correspondre à [img]. C'est le reste de la chaîne que je n'arrive pas à comprendre. – Mark

+0

Lire quelques tutoriels sur http://regular-expressions.info/ – mario

Répondre

1

D'abord, trouver le modèle qui correspond à votre balise BBCode:

\[img\][^\[]+\[/img\] 

La seule partie difficile est la classe [^\]]. Le \[ signifie n'importe quel support d'ouverture et le^signifie NON. Donc, cette classe correspondra à tout ce qui n'est pas [. Vous pouvez également remplacer la classe par .+ et utiliser l'option U (ungreedy).

Maintenant que vous avez maintenant quel modèle à utiliser, il vous suffit de le remplacer par ... une chaîne vide. Et le travail est terminé!

Ceci est une expression rationnelle très basique, il est important que vous compreniez et que vous êtes en mesure de le reproduire

1
/\[img\].*?\[\/img\]/i 

prendra soin de tout entre [img] et [/img] (cas sensible)

+0

Merci. Je vais essayer. – Mark

0

ne pas oublier de grouper votre contenu par exemple '/[img](.+)[\/img]/i', donc en remplaçant la condition vous pouvez référencer la valeur entre les balises '< img src = "$ 1"/>'