2010-07-21 72 views
0

我试图使用preg_replace匹配标记。所使用的正则表达式是:<video[^>]*>(.*?)</video>使用preg_replace替换html标记

但我发现了一个服务器警告:Message: preg_replace() [function.preg-replace]: Unknown modifier ']'

为什么任何线索?

此外,我如何修改正则表达式,以便它可以匹配[视频]标签呢?

谢谢!

+2

你不应该用正则表达式解析HTML。欲了解更多关于为什么的信息,请阅读这个问题的答案:http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not 对于BBCode的东西,你可以使用BBCode扩展如果您有权访问PECL。 http://www.php.net/manual/en/book.bbcode.php – Shabbyrobe 2010-07-21 05:02:11

+0

谢谢,这里没有太多的文档,但我会看到它。 – Nacho 2010-07-21 13:22:41

回答

2

不要忘记根据preg_函数的要求划定您的正则表达式。通常我们会写/regex/,但是任何分隔符都可以。

由于你的正则表达式包含/,我会去找%,以避免它逃脱。

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

当然,要注意尝试通过正则表达式来混淆HTML的危险。会有问题。一如既往。

如果你想[video]代替,只需更换与[]所有<> - 但记得要逃避他们,因为[]有显著正则表达式!

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

谢谢!关于html ..我知道,但它只是视频代码的快速替代品。不应该太成问题。 – Nacho 2010-07-21 04:15:53

+0

@Ignacio - 很高兴帮助:)我确定你知道,但请记得单击答案旁边的复选标记,一旦SO会让你:D谢谢! – Matchu 2010-07-21 04:16:35