需要有关需要使用php的正则表达式的帮助

时间:2011-09-15 22:12:45

标签: php regex

我需要这个正则表达式的帮助,我必须在PHP中使用它,但在使用preg_match时我一直遇到错误。我知道我做错了什么,但我无法理解。此正则表达式查找/匹配字符串中的html标记。如果您有任何其他可以执行此操作的正则表达式,请告诉我们!

</?(a|abbr|acronym|address|applet|area|b|base|basefont|bdo|big|blockquote|body|br|button|caption|center|cite|code|col|colgroup|dd|del|dir|div|dfn|dl|dt|em|fieldset|font|form|frame|frameset|h[1-6]|head|hr|html|i|iframe|img|input|ins|isindex|kbd|label|legend|li|link|map|menu|meta|noframes|noscript|object|ol|optgroup|option|p|param|pre|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|ul|var|xmp)\b((\"[^\"]*\"|\'[^\']*\')*|[^\"\'>])*>

        if (!preg_match("/</?(a|abbr|acronym|address|applet|area|b|base|basefont|bdo|big|blockquote|body|br|button|caption|center|cite|code|col|colgroup|dd|del|dir|div|dfn|dl|dt|em|fieldset|font|form|frame|frameset|h[1-6]|head|hr|html|i|iframe|img|input|ins|isindex|kbd|label|legend|li|link|map|menu|meta|noframes|noscript|object|ol|optgroup|option|p|param|pre|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|ul|var|xmp)\b((\"[^\"]*\"|\'[^\']*\')*|[^\"\'>])*>/", $input) && preg_match("/^.{2,$max_width}$/i", $input)) {
            $result = true;
        }

谢谢!

1 个答案:

答案 0 :(得分:2)

你的正则表达式以/</?(a|abbr|ac...开头 - 分隔符(表示正则表达式的开头和结尾)是正斜杠。当它在<之后看到第二个正斜杠时,它认为正则表达式已经完成。

将其更改为/<\/?(a|abbr|ac(使用反斜杠转义斜杠),它将起作用。