在HTML标记之间提取文本并对其进行计数

时间:2011-04-14 15:09:27

标签: php regex preg-replace preg-match

所以我可以说我写了一篇包含许多标签的文章,例如[code]this is a code[/code],我会知道文章中有多少code个标签,里面的文字是什么。

我尝试了preg_matchespreg_replaces,但到目前为止还没有任何工作。这样做的适当方法是什么?

2 个答案:

答案 0 :(得分:1)

$pattern = '/\[code\](.*?)\[\/code\]/s';

preg_match_all($pattern, $code, $matches);

echo count($matches)."\n";

var_dump($matches);

答案 1 :(得分:0)

这应该对你有用:

/\[code\]([^]]+)\[\/code\]/ 

您需要使用match_all来获取所有值。 顺便说一句,必须有一些像这样的代码的缺陷:

[code]blabla [code]bleh bleh[/code][/code]

由于正则表达式无法解析多个深度级别。至少在深度未知时。

修改

/\[code\](.*)\[\/code\]/也很有用,但不会捕获内部块。第一个只与内部匹配。