这可能是一个愚蠢的问题,但为什么preg_replace_callback
将每个匹配放在单个元素数组中并将其传递给回调函数,因此我必须使用$matches[0]
来处理匹配,为什么不呢?它将匹配作为字符串传递给回调函数吗?
答案 0 :(得分:4)
因为您可以拥有捕获组,并且数组中的每个元素都将是捕获组捕获的内容。索引0处的元素始终是整个匹配。
例如,假设一个匹配MM/DD/YYYY
日期的正则表达式,您可能会将日期的每个段放在它自己的捕获组中,也许是这样的天真:
(\d{2})/(\d{2})/(\d{4})
然后,你有一个类似于:
的匹配数组[0] - MM/DD/YYYY
[1] - MM
[2] - DD
[3] - YYYY