我对 php 中的函数 preg_split
有疑问
我的正则表达式是
#^(-?[0-9]+)(([+x])(-?[0-9]+))*$#
我想要例如转换:
-5+69x45
在这样的数组中
{
[0] = -5
[1] = +
[2] = 69
[3] = x
[4] = 45
}
我使用 preg_match 的正则表达式和数学
但是使用 preg split 我没有我的数组
我有一个没有标志或的空数组
{
[0] = -5
[1] = x
[2] = 45
}
带有标志 PREG_SPLIT_DELIM_CAPTURE
我的错误在哪里?
最佳答案
我认为你误解了 preg_split
。
您定义的模式用于拆分字符串,但这意味着与您的模式匹配的字符串部分不会包含在结果数组中。
通过使用标志 PREG_SPLIT_DELIM_CAPTURE
捕获组的内容被添加到结果数组 ( preg_spit doc )。
#^(-?[0-9]+)(([+x])(-?[0-9]+))*$#
^^^^^^^^^^^^^^^^^^
但是你在最后两个组周围有一个量词,这意味着 $2 和 $3 只是存储的最后一个匹配项,并且这个组的第一个匹配项“+69”被覆盖,所以在你的情况下你得到
$1 = -5
$2 = x
$3 = 45
关于php - preg_split 将所有结果捕获到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9262750/