2012-05-21 130 views
1

我想用字符數組分割一個字符串,我該怎麼做?我注意到preg_split需要一個字符串輸入而不是一個數組。php:如何通過字符數組分割字符串?

例如,這裏是我的數組:

$splitting_strings = array(".", ";", "-", "and", "for");

$text = "What a great day, and I love it. Who knows; maybe I will go.";

$result = array (
0 => "What a great day", 
1 => "I love it", 
2 => "Who knows", 
3 => "maybe I will go"); 

回答

2

您可以通過preg_split()如下:

$regex = '/(' . implode('|', $splitting_strings) . ')/'; 

您將需要避免任何特殊正則表達式的特徵例如.。所以,你應該用什麼落得像這個:

// run through each element in the array escaping any 
// special regex chars 
$splitting_strings = array_map(function($string) { 
            return preg_quote($string); 
           }, $splitting_strings); 

$regex = '/(' . implode('|', $splitting_strings) . ')/'; 
$final_array = preg_split($regex, $splitting_strings); 

$final_array畢竟這輸出是:

array(5) { 
    [0]=> 
    string(18) "What a great day, " 
    [1]=> 
    string(10) " I love it" 
    [2]=> 
    string(10) " Who knows" 
    [3]=> 
    string(16) " maybe I will go" 
    [4]=> 
    string(0) "" 
} 
+0

謝謝,這應該是圓括弧沒有? [和]也匹配「dna」,因爲方括號是用於字符類的,而圓括號是用於分組的,據我所知。 – giorgio79

+1

是的,它應該是()而不是[] – erdeszt

+0

我已經更新了這個,但它意味着你現在需要轉義正則表達符號,例如'.'來阻止它分裂所有東西! :) – Treffynnon