正则表达式匹配包含但不包含其他HTML标记的字符串?

时间:2010-11-15 04:21:41

标签: php

我想查找和匹配不包含HTML标记的字符串,但是< br />和所有其他正常字符([^<>] +)。

基本上,这个匹配解除了包含'<'的任何字符串或'>'但不是'< br />'。

这是我能想到的:

preg_match('@[(?:<br/>).]+@sU', $str, $match);

显然它不起作用'因为我不知道该把什么放在点上。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我会向后执行 - 查看字符串是否包含除<...>以外的任何<br/>标记,如果有,则将其解除。所以:

preg_match(/<(?!br)/i, $str, $match);
if (!$match) we_are_good();

答案 1 :(得分:1)

为什么不......

@(?:[^<]|<br */>)*@

即,任意数量(完整的<br />标记或任何非标记开放字符)。