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

时间:2013-01-17 16:20:40

标签: php preg-match

我正在使用cURL处理小型网站剪贴簿。

我决定使用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

1 个答案:

答案 0 :(得分:3)

preg_match的默认行为是返回在索引0处的结果数组中匹配的整个字符串,然后返回后续结果数组索引中的每个匹配的子模式。如果没有匹配,则结果数组为空。如果某些内容匹配,则会获得匹配的完整字符串,然后是任何子模式。