为什么preg_Match()在返回的数组的索引1(而不是0)处返回第一个匹配?

2022-03-29 00:00:00 php preg-match

我正在使用卷曲功能的小型网站刮板。

我决定使用preg_match查找页眉和文章内容。

这是我的代码:

preg_match('@<h2 class="title">(.*?)</h2>@s', $this->website, $this->title);
            
if(sizeof($this->title) > 1)
    $this->title = trim($this->title[1]); // rewrite first element of array to regular variable
    

我正在试验它,我发现如果有一个匹配项,它会在索引1处的数组中返回它,而不是0。

编辑后的问题:为什么这是1,而不是0?我做错了什么吗?

我的服务器:Apache/2.4.3(Win32)PHP/5.4.7


解决方案

PREG_MATCH的默认行为是返回结果数组中索引0处匹配的整个字符串,然后返回后续结果数组索引中匹配的每个子模式。如果没有匹配,则结果数组为空。如果有匹配项,您将获得匹配的完整字符串,然后是所有子模式。

相关文章