2017-01-22 46 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]=?