2016-01-23 58 views
0

我想知道如何通过2个分隔符中的任意一个分隔字符串,因为我想分割的字符串可以包含逗号','或连字符' - '。根据字符串中包含的内容将字符串拆分为两个分隔符

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

有没有建议吗?

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

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

我会好奇你为什么要使用这样的字符串。你将来需要添加另一个拆分器吗?你有控制字符串的格式吗?对于你有什么,你将不得不看字符串,以确定是否存在每个删除符,然后根据检查我们适当的删除符。 – pcnate

+0

其实我正在使用Google API for places。 API中的城市和乡村地方有时用逗号分隔,有时用连字符分隔,所以我需要能够使用两者。 – mush

回答

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 
) 
+0

由于某种原因,我并不为此工作。 – mush

+0

@mush是的,我不得不编辑它几次迭代。现在试试。 – wogsland

+0

我得到这个错误:
警告:ucfirst()期望参数1是字符串,数组给出 – mush

0

的strtok()将内工作用于不同分隔符的for循环

1
$string = "abc,def-g,h,i-lm"; 

$arr = [strtok($string, ',-')]; 
while (false !== $token = strtok(',-')) { 
    $arr[] = $token; 
} 

var_dump($arr); 

Demo

2

另一种选择是使用preg_split

$arr = preg_split('/[,-]/', $string); 

这已超过了strtok和递归explode答案做所有的C代码循环的优势(所以,要快很多),并允许分割成一个正则表达式,如果你想修剪单词之间的空格将会很方便:

$arr = preg_split('/\s*[,-]\s*/', $string); 
相关问题