розбиття рядків

завдання
Необхідно розділити рядок на частини. Наприклад, потрібно отримати доступ до кожної з рядків, які користувач вводить в поле форми.

Рішення
Якщо в якості роздільника частин рядків виступає строкова константа, то слід застосовувати функцію explode ():

$ Words = explode ( '', 'My sentence is not very complicated');

Функція split () або функція preg_split () застосовуються, якщо при описі роздільник потрібно регулярний вираз POSIX або Perl:

$ Words = split ( '+', 'This sentence has some extra whitespace in it.');
$ Words = preg_split ( '/ \ d \. /', 'My day: 1. get up 2. get dressed 3. eat toast');
$ Lines = preg_split ( '/ [\ n \ r] + /', $ _ REQUEST [ 'textarea']);

У разі чутливого до регістру роздільник застосовується функція spliti () або прапор / i в функції preg_split ():

$ Words = spliti ( 'x', '31 inches x 22 inches X 9 inches ');
$ Words = preg_split ( '/ x / i', '31 inches x 22 inches X 9 inches');

Обговорення
Найпростішим рішенням з усіх наведених вище є використання explode (). Передайте їй роздільник рядка, саму рядок, яку необхідно розділити, і в якості необов'язкового параметра гранична кількість повертаються елементів:

$ Dwarves = 'dopey, sleepy, happy, grumpy, sneezy, bashful, doc';
$ Dwarf_array = explode ( ',', $ dwarves);

Тепер змінна $ dwarf_array - це масив з семи елементів:

Якщо задана межа менше кількості можливих частин, то остання частина містить все інше:

$ Dwarf_array = explode ( ',', $ dwarves, 5);
print_r ($ dwarf_array);
Array
(
[0] => dopey
[1] => sleepy
[2] => happy
[3] => grumpy
[4] => sneezy, bashful, doc
)

Функція explode () трактує роздільник рядка буквально.


Якщо роздільник рядка визначається як кома з пропуском, то дана функція ділить рядок по пропуску, наступного за коми, а не по коми або пробілу. Функція split () надає велику гнучкість. Замість строкового литерала як роздільник вона використовує регулярний вираз POSIX:

$ More_dwarves = 'cheeky, fatso, wonder boy, chunky, growly, groggy, winky';
$ More_dwarf_array = split ( '.', $ More_dwarves);

Це регулярний вираз розділяє рядок по коми, за якою слід необов'язковий пробіл, що дозволяє правильно визначити всіх нових гномів. Таким чином, прогалини в їхніх іменах не поділяють їх на частини, але кожне ім'я виділяється незалежно від того, відділяється воно за допомогою коми "," або за допомогою коми з пропуском «,»:

print_r ($ more_dwarf_array);
Array
(
[0] => cheeky
[1] => fatso
[2] => wonder boy
[3] => chunky
[4] => growly
[5] => groggy
[6] => winky
)

Існує функція preg_split (), яка подібно функції split () використовує Perl-сумісні регулярні вирази замість регулярних виразів POSIX.


Функція preg_split () надає переваги різних розширень регулярних виразів в Perl, а також хитрі прийоми, такі як включення тексту-роздільник в повертається масив рядків:

Роздільник-регулярний вираз шукає математичні оператори (+, -, /, *), оточені необов'язковими початковими або завершальними пробілами. Прапор PREG_SPLIT_DELIM_CAPTURE наказує функції preg_split () включити збіги як частина роздільник-регулярного виразу, укладеного в лапки, в повертається строковий масив. В лапках тільки символи математичних операцій, тому повернутий масив не містить пробілів.

Схожі статті