为什么preg_replace_callback传递给回调函数的参数是一个数组

时间:2013-11-18 13:38:43

标签: php regex string preg-replace-callback

这可能是一个愚蠢的问题,但为什么preg_replace_callback将每个匹配放在单个元素数组中并将其传递给回调函数,因此我必须使用$matches[0]来处理匹配,为什么不呢?它将匹配作为字符串传递给回调函数吗?

1 个答案:

答案 0 :(得分:4)

因为您可以拥有捕获组,并且数组中的每个元素都将是捕获组捕获的内容。索引0处的元素始终是整个匹配。

例如,假设一个匹配MM/DD/YYYY日期的正则表达式,您可能会将日期的每个段放在它自己的捕获组中,也许是这样的天真:

(\d{2})/(\d{2})/(\d{4})

然后,你有一个类似于:

的匹配数组
[0] - MM/DD/YYYY
[1] - MM
[2] - DD
[3] - YYYY