2017-01-22 10 views
1

Я хочу разбить строку на массив. Я хочу, чтобы слова и метасимволы разделились в массиве. Как это:php spltting string в массив с метахарами

$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]=?