我最近发现了一个奇怪的现象:
在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