2017-01-22 8 views
1

文字列を配列に分割したい。私は単語とメタキャラクタを配列で区切りたい。このよう :メタ文字付きの配列にPHPをスプレットする

$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の区切り記号でその答えを知っている人がいることを願っています。

ありがとうございます。

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

プリント:あなたが行うことができ

+0

メタキャラクターとは何ですか?句読点を意味しますか? – WillardSolutions

+0

あなたの責任に感謝します。はい、私はすべての:句読点マークの疑問符などが欲しい。私は単語が正しいことを確認する口述のプログラムを作らなければなりません。その句読点は正しい位置にあります。 – Overste

答えて

3

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]=? 
関連する問題