Я хочу разбить строку в массив. Я хочу, чтобы слова и метасимволы разделялись в массиве.
Как это:
$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);
Печать:
Array
(
[1] => This
[3] => is
[5] => a
[7] => string
[8] => ?
[9] => Or
[11] => an
[13] => array
[14] => ?
)
То, что здесь происходит, ты разделяешь \b
который является границей слова. Причина обрезки и фильтрации заключается в том, что это также соответствует пробелам.
Вы можете попробовать с 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]=?