2010-07-21 4 views
0

J'essaie de faire correspondre les balises avec preg_replace. Le regex utilisé est: <video[^>]*>(.*?)</video>Remplacement de la balise html avec preg_replace

Mais je deviens un avertissement du serveur: Message: preg_replace() [function.preg-replace]: Unknown modifier ']'

Des indices sur les raisons?

De même, comment est-ce que je pourrais modifier l'expression rationnelle afin qu'elle puisse correspondre aux balises [video] à la place?

Merci! N'oubliez pas de délimiter votre regex, comme requis dans les fonctions preg_

+2

Vous ne devriez pas analyser HTML avec regex. Pour plus d'informations sur pourquoi, lisez les réponses à cette question: http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not Pour les trucs BBCode, vous pouvez utiliser l'extension BBCode si vous avez accès à PECL. http://www.php.net/manual/fr/book.bbcode.php – Shabbyrobe

+0

Merci, il n'y a pas beaucoup de documentation à ce sujet mais je vais voir autour. – Nacho

Répondre

2

Habituellement, nous écririons /regex/, mais tous les délimiteurs feront l'affaire.

Depuis votre expression régulière contient /, je vais pour %, pour éviter de l'échapper.

%<video[^>]*>(.*?)</video>% 

Bien sûr, attention aux dangers d'essayer de jouer avec HTML via regex. Il y aura des problèmes. Comme toujours.

Si vous voulez [video] à la place, il suffit de remplacer tous les <> avec [] - mais rappelez-vous de leur échapper, car [ et ] sont significatifs dans les expressions régulières!

%\[video[^\]]*\](.*?)\[/video\]% 
+0

Merci un milliard! A propos du html .. Je sais, mais c'est juste un remplacement rapide pour le code vidéo. Ne devrait pas être trop problématique. – Nacho

+0

@Ignacio - heureux d'aider :) Je suis sûr que vous savez, mais s'il vous plaît n'oubliez pas de cliquer sur la coche à côté de la réponse une fois SO vous permettra: D Merci! – Matchu

Questions connexes