1

我想将一个字符串拆分为数组。我希望将单词和元字符分隔在一个数组中。像这样:

$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.

感谢您的时间。

4

2 回答 2

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哪个是单词边界。修剪和过滤的原因是这也匹配空格。

于 2017-01-22T15:20:23.060 回答
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]=?
于 2017-01-22T16:24:57.533 回答