我想知道如何通过2个分隔符中的任何一个分解字符串,因为我要分割的字符串可以包含逗号','或连字符' - '。
下面的代码适用于','但不能让' - '和','同时工作。
有任何建议吗?
// first possible string
$string = "hello, you";
// second possible string
$string = "hello- you";
//explode function
list($part1, $part2) = explode(',', $string);
答案 0 :(得分:2)
另一种选择是使用preg_split
:
$arr = preg_split('/[,-]/', $string);
通过在C代码中执行所有循环(因此,应该更快),这比strtok
和递归explode
答案具有优势,并允许拆分为正则表达式,如果你想修剪单词之间的空格,这将是很方便的:
$arr = preg_split('/\s*[,-]\s*/', $string);
答案 1 :(得分:1)
$string = "abc,def-g,h,i-lm";
$arr = [strtok($string, ',-')];
while (false !== $token = strtok(',-')) {
$arr[] = $token;
}
var_dump($arr);
答案 2 :(得分:0)
只需将explode
连续应用于字符串,然后应用于结果数组:
$string = "hello, you - sir";
$temp = explode('-', $string);
$result = array();
foreach ($temp as $piece) {
$result = array_merge($result, explode(',', $piece));
}
和$result
将包含您要查找的内容:
Array
(
[0] => hello
[1] => you
[2] => sir
)
答案 3 :(得分:0)
Strtok()将在for循环中用于不同的分隔符