2017-01-22 49 views
1

我想分割一個字符串到數組中。我希望單詞和元字符在數組中分開。 像這樣:php spltting字符串與元數組

$string = 'This is a string? Or an array?'; 

我想:

array[0] = 'This', 
array[1] = 'is', 
array[2] = 'a', 
array[3] = 'string', 
array[4] = '?', 
array[5] = 'Or', 
array[6] = 'etc'; 

我知道,必須使用preg_split。但我可以管理只選擇字符串或沒有字符串。我在互聯網上搜索,但我只能找到沒有元字符的例子。
我希望有人知道答案,因爲我在preg_spilt的分隔符。

謝謝你的時間。

+0

什麼是元字符?你的意思是標點符號嗎? – WillardSolutions

+0

感謝您的回覆。是的,我想要所有的:標點符號問號,等等。我必須做一個聽寫程序,檢查是否拼寫正確。而且標點符號位於正確的位置。 – Overste

回答

3

你可以這樣做:

$string= 'This is a string? Or an array?'; 
$array = array_filter(array_map('trim',preg_split("/\b/", $string))); 
print_r($array); 

打印:

Array 
(
    [1] => This 
    [3] => is 
    [5] => a 
    [7] => string 
    [8] => ? 
    [9] => Or 
    [11] => an 
    [13] => array 
    [14] => ? 
) 

這是怎麼回事是你在\b分裂這是一個字邊界。修剪和過濾的原因是,這也匹配空格。

+1

你可以通過使用'array_filter(preg_split(「/ \ s | \ b /」,$ string);'來簡化這個問題,'它也會在空白字符上分割。 – Samadi

0

您可以explode()也嘗試:

$string= 'This is a string? Or an array?'; 
$replaced_string = str_replace("?", " ?", $string); 
$array = explode(" ", $replaced_string); 

for ($i = 0; $i < count($array); $i++){ 
    echo $array[$i]."<br>"; 
} 

結果是:

This<br> 
is<br> 
a<br> 
string<br> 
?<br> 
Or<br> 
an<br> 
array<br> 
? 

還是做到這一點:

for ($i = 0; $i < count($array); $i++){ 
    echo 'array['.$i.']='.$array[$i]."<br>"; 
} 

結果是:

array[0]=This<br> 
array[1]=is<br> 
array[2]=a<br> 
array[3]=string<br> 
array[4]=?<br> 
array[5]=Or<br> 
array[6]=an<br> 
array[7]=array<br> 
array[8]=?