PHP пошук в рядку – огляд доступного інструментарію

38

Від автора: чесно зізнаюся, що заздрю сусіда! Вчора зайшов до нього в гараж, а в нього там стільки ключів і викруток! Все по поличках розвішані, за розмірами; яскраво блищать хромом у світлі світлодіодних ламп. Ну, прям як набір інструментів, за допомогою яких відбувається PHP пошук в рядку.

Що таке рядка

Перш, ніж занурюватися в цю тему «за вуха», відразу попереджаю, що буде трохи нудно. Чесно кажучи, я сам можу занудьгувати при написанні цього матеріалу. Так що відразу прошу мене пробачити, якщо почну дуріти :) .

Тепер розберемося, що собою представляють рядка. Точніше, як до них ставиться» PHP. В даному мовою рядки являють собою масиви, що складаються з набору символів. Так це чи ні, дізнаємося на практиці по ходу розгляду прикладів.

Гаразд, досить балачок! Приступимо до вивчення цього важливого матеріалу. До речі, якщо тема важлива, то обов’язково нудна чомусь :) .

Рядок у рядку

Це вже не програмування, а матрьошка якась виходить! Так і є: будь-який числовий або символьний масив можна розбити на кілька частин. Розглянемо, як відбувається в PHP пошук заданого підрядка в рядку.

Для цього використовуємо функцію, назва якої звучить в тему – strstr(). В якості аргументів вона приймає основну рядок підрядок і необов’язковий параметр before_needle, який має тип bool. Якщо встановити його в true, тоді функція поверне частину підрядка зліва від шуканої, але без неї:

Результат виконання:

Якщо не вказувати before_needle, тоді strstr() поверне частину рядка, що починається з вказаної. Наприклад:

Рядок може складатися не тільки з декількох слів, але і навіть з одного символу. Ця особливість в сукупності з розглянутої функцією широко застосовується на практиці. Наприклад, для «обрізки» користувацьких даних:

Таким чином, за допомогою PHP пошуку символу у зазначеному рядку ми «вийняли» логін користувача з адреси його поштової скриньки.

Інші варіанти

Функція strstr() є «регистрочувствительной». Що не завжди доречно, особливо для обробки даних, що вводяться користувачами в різні форми. Але в PHP можна завжди знайти альтернативний варіант.

stristr() на відміну від свого «побратима» регистронезависима. Перевіримо дію обох функцій на практиці. Використовуємо для цього Василя Сидоровича Разгильдяева. Ви його не впізнаєте? Це ж двоюрідний брат Василя Пупкіна :) . Але давайте повернемося до наших функцій і здійснимо пошук слова в рядку PHP за допомогою кожної з них. При цьому ми будемо навмисно використовувати різні регістри літер у підрядку (шуканого) і рядку:

Тепер випробуємо функцію strstr():

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

Позиція шуканого

Але існують і інші елементи мови, які з успіхом можуть впоратися з цим завданням. До того ж деякі з них володіють і іншими корисними «талантами». Наприклад, повертають позицію входження шуканого рядка.

Упс! Перепрошую за неточність. Здається, strops() також страждає «регистрозависимостью», тому що шуканий світ знову не знайдено. Сподіваюся, для цього «недуги» знайдеться ліки, і ми зможемо за допомогою PHP пошукати входження в рядку.

І я знайшов таке ліки! Це функція stripos(). Давайте відразу перевіримо, чи має вона «імунітетом». А то знову прошляпим :) .

Все, нудьга на сьогодні досить! Якщо ви думаєте, що це нудна тема, то ви помиляєтеся. Ми з вами ще не дійшли до PHP пошуку в рядку з допомогою регулярних виразів – ось де повний «капут». Але цей жах я припасу на наступний Хеллоуїн :) . До наступного заняття!