2016-01-23 57 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); 
相關問題