【问题标题】:Why the argument that preg_replace_callback passes to the callback function is an array为什么 preg_replace_callback 传递给回调函数的参数是一个数组
【发布时间】:2013-12-01 16:30:15
【问题描述】:

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

【问题讨论】:

  • @Brewal 我确实有多个匹配项,对于所有这些多个匹配项,回调函数会收到一个包含单个元素的数组

标签: php regex string preg-replace-callback


【解决方案1】:

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

例如,给定一个匹配 MM/DD/YYYY 日期的正则表达式,您可以将日期的每个部分放在它自己的捕获组中,也许像这样天真:

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

然后,您将有一个匹配数组,类似于:

[0] - MM/DD/YYYY
[1] - MM
[2] - DD
[3] - YYYY

【讨论】:

  • @DesmondHume - 不,they're in there,你只需要挖掘。
  • 想知道为什么他们决定在 preg_replace_callback 的页面上不告诉任何关于捕获组的事情
  • @DesmondHume - 可能是因为它不仅仅针对 preg_replace_callback() - 它是正则表达式和所有 PCRE 函数的一般特性。 preg_match()preg_match_all() 等都受益于此功能。
猜你喜欢
  • 2011-02-10
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 2020-06-20
相关资源
最近更新 更多