Joomla getBody正则表达现象

时间:2012-01-17 23:38:47

标签: php regex joomla joomla1.5

我最近发现了一个奇怪的现象:

在Joomla创建HTML之后,我尝试添加一些标题。在此之前我不能这样做,因为我需要HTML中的一些信息。 要过滤掉标题,我使用的是一个简单的正则表达式:#(<\s*head[^>]*>.*)(<\s*/\s*head\s*>)#ism,但它不起作用。 但如果我在此之前使用#(<\s*head[^>]*>\s*.*)<\s*body[^>]*>#ism,它会突然起作用。有人能解释我这种奇怪的行为吗?欢迎任何想法。

public function onAfterRender()
{
...

$html = JResponse::getBody();

preg_match('#(<\s*head[^>]*>.*<\s*/\s*head\s*>)#ism', $html, $matchWholeBody);
preg_match('#(<\s*head[^>]*>\s*.*)<\s*body[^>]*>#ism', $html, $match);
preg_match('#(<\s*head[^>]*>.*<\s*/\s*head\s*>)#ism', $match[1], $matchFilteredBody);

...
}

结果(var_dumps):

$matchWholeBody: array(0)
$match[1]: string(3641)
$matchFilteredBody[1]: string(3639)

Joomla 1.5.25 php 5.3.2

0 个答案:

没有答案