Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将字符串拆分为数组?_Php_String_Preg Split - Fatal编程技术网

Php 如何将字符串拆分为数组?

Php 如何将字符串拆分为数组?,php,string,preg-split,Php,String,Preg Split,我尝试将字符串拆分为数组。计算符号之间的所有字符串+/*-: $keywords = preg_split("/[\s,-]*[+-*]+/", "quanity*price/2+tax"); 这就是我努力实现的目标: Array ( [0] => quantity [1] => price [1] => tax ) 但结果是一个空字符串。这将在存在以下任何字符串的位置拆分该字符串:+/*并从中创建一个数组: $string = "quanity*p

我尝试将字符串拆分为数组。计算符号之间的所有字符串
+/*-

$keywords = preg_split("/[\s,-]*[+-*]+/", "quanity*price/2+tax");
这就是我努力实现的目标:

Array
(
    [0] => quantity
    [1] => price
    [1] => tax
)

但结果是一个空字符串。

这将在存在以下任何字符串的位置拆分该字符串:+/*并从中创建一个数组:

$string = "quanity*price/2+tax";  
$str_arr = preg_split ("/[-*\/+\d]+/", $string);  
print_r($str_arr); 

为清晰起见,将代码与示例一起发布。

这将在存在以下任何字符串的位置拆分字符串:+/*并从中创建一个数组:

$string = "quanity*price/2+tax";  
$str_arr = preg_split ("/[-*\/+\d]+/", $string);  
print_r($str_arr); 

为清晰起见,将代码与示例一起发布。

使用第四只鸟推荐的正则表达式:

$keywords = preg_split("/[-*\/+\d]+/", "quanity*price/2+tax", -1, PREG_SPLIT_NO_EMPTY);

PREG\u SPLIT\u NO\u EMPTY
应该删除空值()。

使用第四只鸟推荐的正则表达式:

$keywords = preg_split("/[-*\/+\d]+/", "quanity*price/2+tax", -1, PREG_SPLIT_NO_EMPTY);

PREG\u SPLIT\u NO\u EMPTY
应删除空值()。

在您尝试的模式中,第二个字符类与数字不匹配,应将连字符转义或放在开头/结尾

您可以改用单个字符类。如果将分隔符更改为除
/
以外的其他值,如
~
,则不必转义正斜杠

[-*\/+\d]+
|

比如说

$strings = [
    "quanity*price/2+tax",
    "quanity*price/2"
];

foreach ($strings as $string) {
    $keywords = preg_split("~[-*/+\d]+~", $string,  -1, PREG_SPLIT_NO_EMPTY);
    print_r($keywords);
}
输出

Array
(
    [0] => quanity
    [1] => price
    [2] => tax
)
Array
(
    [0] => quanity
    [1] => price
)
如果还希望匹配0+前面的空白字符,请使用逗号:

[\s,]*[-*/+\d]+

在您尝试的模式中,第二个字符类与数字不匹配,应将连字符转义或放在开头/结尾

您可以改用单个字符类。如果将分隔符更改为除
/
以外的其他值,如
~
,则不必转义正斜杠

[-*\/+\d]+
|

比如说

$strings = [
    "quanity*price/2+tax",
    "quanity*price/2"
];

foreach ($strings as $string) {
    $keywords = preg_split("~[-*/+\d]+~", $string,  -1, PREG_SPLIT_NO_EMPTY);
    print_r($keywords);
}
输出

Array
(
    [0] => quanity
    [1] => price
    [2] => tax
)
Array
(
    [0] => quanity
    [1] => price
)
如果还希望匹配0+前面的空白字符,请使用逗号:

[\s,]*[-*/+\d]+

你的意思是在
[-*\/+\d]+
上拆分吗?你可以将
-
移动到字符类的开头/结尾或转义
\-
哦,这是我真正需要的网站。谢谢不,但是第四只鸟没有问为什么不在这里爆炸+str\u替换??@peace\u love你可以这样做你的意思是在
[-*\/+\d]+
上分裂你可以将
-
移动到字符类的开头/结尾或转义
\-
哦,这是我真正需要的网站。谢谢你不,但是第四只鸟没有问为什么不爆炸+str_替换这里??@peace_love你可以这样做你的回答的结果:
array:1[▼   0=>“数量*价格/2+税”]
大收获,@peace\u love。我在
preg_split
中遗漏了可选的第三个参数,并将标志放错了位置。我已经更新了我的答案,为$limit参数添加了
-1
,以指定无限制。我也可以通过
0
null
。您的回答结果:
array:1[▼   0=>“数量*价格/2+税”]
大收获,@peace\u love。我在
preg_split
中遗漏了可选的第三个参数,并将标志放错了位置。我已经更新了我的答案,为$limit参数添加了
-1
,以指定无限制。我也可以通过
0
null