根据字符串中包含的内容,将字符串拆分为2个分隔符之一

时间:2016-01-23 22:27:46

标签: php

我想知道如何通过2个分隔符中的任何一个分解字符串,因为我要分割的字符串可以包含逗号','或连字符' - '。

下面的代码适用于','但不能让' - '和','同时工作。

有任何建议吗?

   // first possible string 
$string = "hello, you";
// second possible string 
$string = "hello- you";

//explode function
         list($part1, $part2) = explode(',', $string); 

4 个答案:

答案 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);

Demo

答案 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循环中用于不同的分隔符