我有这个正则表达式
if (preg_match('/(Seg|Segunda)? [aà] (Sex|sexta)?: (de)?\s?(\d{1,2})h?(\d{2})? [aà]s (.*?)h(\d{2})?/is', $obj["horario"], $hora))
如果我想在数组中使用on()内部的值,如$hora[1]
,$hora[2]
...等,问题是我不想把数组放在{{1像agrupations
一样,因为我只想要数字expreisons,任何方式都不要把它们放进去?
答案 0 :(得分:1)
仅以正则表达式模式捕获组会使PHP将项添加到生成的preg_match
数组中。为避免将它们放在那里,只需将它们转换为非捕获的,在开始?:
后添加(
。如果该组不包含替换运算符,则可以删除括号((.*?)
=> .*?
)。
例如:
if (preg_match('/(?:Seg|Segunda)? [aà] (?:Sex|sexta)?: (?:de)?\s?(\d{1,2})h?(\d{2})? [aà]s .*?h(\d{2})?/uis', $obj["horario"], $hora))
现在,只有数字值将作为数组中的单独项添加。
此外,由于模式中使用了非ASCII字符,因此最好传递u
修饰符,使PCRE能够将输入字符串解析为Unicode字符串。