如何将字符串拆分为数组?
How can I split a string into an array?
我尝试将我的字符串拆分成一个数组。计算符号之间的所有字符串 +/*-
:
$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);
为清楚起见,已发布带有示例的代码。
使用第四只鸟推荐的正则表达式:
$keywords = preg_split("/[-*\/+\d]+/", "quanity*price/2+tax", -1, PREG_SPLIT_NO_EMPTY);
PREG_SPLIT_NO_EMPTY
应该删除空值 (https://www.php.net//manual/en/function.preg-split.php)。
在您尝试的模式中,第二个字符 class 与数字不匹配,连字符应转义或放置在 beginning/end.
您可以改用单个字符 class。如果将分隔符更改为 /
以外的其他分隔符,例如 ~
,则不必转义正斜杠。
[-*\/+\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]+
我尝试将我的字符串拆分成一个数组。计算符号之间的所有字符串 +/*-
:
$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);
为清楚起见,已发布带有示例的代码。
使用第四只鸟推荐的正则表达式:
$keywords = preg_split("/[-*\/+\d]+/", "quanity*price/2+tax", -1, PREG_SPLIT_NO_EMPTY);
PREG_SPLIT_NO_EMPTY
应该删除空值 (https://www.php.net//manual/en/function.preg-split.php)。
在您尝试的模式中,第二个字符 class 与数字不匹配,连字符应转义或放置在 beginning/end.
您可以改用单个字符 class。如果将分隔符更改为 /
以外的其他分隔符,例如 ~
,则不必转义正斜杠。
[-*\/+\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]+