我遇到了以下具有我不理解的正则表达式的代码。
具体来说:
'#<!-- START '. $tag . ' -->(.+?)<!-- END '. $tag . ' -->#si'
PHP 说函数 'preg_match' 将返回以下内容:
" 如果提供了匹配项,则填充搜索结果。$matches[0] 将包含与完整模式匹配的文本,$matches[1] 将包含与第一个捕获的带括号的子模式匹配的文本,依此类推上。 ”
我认为
(.+?)
就是这样一个“带括号的子模式”。我在哪里可以阅读有关子模式的信息?一个不像 w3schools.com 的官方网站。
/**
* Gets a chunk of page content
* @param String the tag wrapping the block ( <!-- START tag --> block <!-- END tag --> )
* @return String the block of content
*/
public function getBlock( $tag )
{
preg_match ('#<!-- START '. $tag . ' -->(.+?)<!-- END '. $tag . ' -->#si', $this->content, $tor);
$tor = str_replace ('<!-- START '. $tag . ' -->', "", $tor[0]);
$tor = str_replace ('<!-- END ' . $tag . ' -->', "", $tor);
return $tor;
}
任何解释以及链接都会有所帮助!
谢谢!