Уроки PHP – основні приклади роботи з рядками

В сьогоднішній статті ми розглянемо практичні приклади основних операцій з рядками в PHP: об’єднання рядків (конкатенація), порівняння рядків, конвертація рядків в ціле число та в масив, заміна рядка.

 

 

Конкатенація (об’єднання) рядків PHP

Конкатенація рядків – це метод маніпулювання рядками, коли ви об’єднуєте 2 або більше рядків. У PHP це завдання вирішується досить просто. Для цього ви можете використовувати оператор конкатенації, яким є ‘.‘ (крапка). Нижче наведено приклад об’єднання 2 або більше рядків таким чином:

<?php
$str1 = 'Це ';
$str2 = 'приклад ';
$str3 = 'кількох рядків';
$konkat = $str1 . $str2 . $str3;
echo $konkat; // Результат: Це приклад кількох рядків
?>

 

Крім цього, ви можете використовувати оператор конкатенації для додавання рядка до вже існуючого рядка:

<?php
$konkat  = 'Це початковий рядок';
$konkat .= ', а цей рядок був приєднаний';
echo $konkat; // Результат: Це початковий рядок, а цей рядок був приєднаний
?>

 

Якщо об’єднуєте число з рядком, тоді число буде перетворено у значення рядка, тож вивід буде таким:

<?php
$i = 100;
$str = $i . ' - це число';
echo $str; // Результат: 100 - це число
?>

 

 

Приклади порівняння рядків у PHP

Час від часу потрібно порівнювати різні рядки і виконувати певні дії, в залежності від результату. Найпростіший спосіб порівняти рядки – це використовувати оператор порівняння (==):

<?php
$str1 = "Тест";
$str2 = "Тест";
if($str1 == "Тест") {
 echo "TRUE"; // Результат: TRUE
}
if($str1 == $str2) {
 echo "TRUE"; // Результат: TRUE
}
?>

 

Ви також можете використовувати вбудовані у PHP функції, такі як strcmp і strcasecmp. Ці функції роблять бінарно-безпечне порівняння рядків, при цьому strcasecmp є нечутливою до регістру. За допомогою цих функцій ви можете виявити, який рядок більший або менший, оскільки вони повертають < 0, якщо РЯДОК1 менше РЯДКА2, > 0, якщо РЯДОК1 більше РЯДКА2 і 0, якщо ці рядки рівні. Таким чином, ви можете використовувати ці функції так:

<?php
$str1 = "Тест";
$str2 = "тест";
if(strcmp($str1, "Тест") == 0) echo "TRUE"; // Результат: TRUE
echo strcasecmp($str1, $str2); // Результат: -1
?>

 

 

Іноді трапляється, що рядки є рівними, але порівняння каже, що вони різні. Найбільш поширеною проблемою в даному випадку є наявність пробілів до або після відповідного тексту. Це призводить до того, що рядки стають різними. Щоб вирішити цю проблему, має сенс використовувати вбудовану в PHP функцію обробки trim, щоб видалити всі небажані пробіли:

<?php
$str1 = "Тест";
$str2 = "  Тест   ";
if($str1 == trim($str2)) {
 echo "TRUE"; // Результат: TRUE
}
if(strcmp($str1, trim($str2)) == 0) {
 echo "TRUE"; // Результат: TRUE
}
?>

 

 

Конвертування рядка PHP у ціле число (int, integer)

Іноді важливо мати значення змінної у форматі цілого числа (int, integer). Для прикладу, якщо відвідувачі вашого сайту заповнюють форму з полем, яке повинно бути представлене цілим числом. Однак у масиві $_POST ви отримуєте дані цього поля в якості рядка.

Перетворити рядок на ціле число в PHP досить просто. Потрібно лише використовувати тип даних. Для цього додайте (int) перед вашою змінною. Ось приклад, як це зробити:

<?php
$str = "100";
$num = (int)$str;
?>

 

Щоб перевірити, чи дійсно код працює, можна скористатися оператором ===. Цей оператор перевіряє не тільки значення, але й типи даних. Код може виглядати так:

<?php
$str = "100";
$num = (int)$str;
if ($str === 100) {echo "Рядок";}
if ($num === 100) {echo "Ціле число - int";}
?>

 

 

Перетворення рядків у масив в PHP

Щоб розділити рядок на складові частини і зберегти результат в масиві, можна використовувати функцію explode().

Синтаксис функції:

explode ( string $delimiter , string $string [, int $limit ] )

 

  • delimiter – роздільник
  • string – початковий рядок
  • limit – обмеження символів для елемента (необов’язковий параметр)

 

Розглянемо практичний приклад:

<?php
$string = "item1, item2, item3, item4";
$delimiter = ",";
$itemList = explode($delimiter, $string);
var_dump($itemList);
// Результат: array(4) { [0]=> string(5) "item1" [1]=> string(6) " item2" [2]=> string(6) " item3" [3]=> string(6) " item4" }
?>

 

 

Але що станеться, якщо ви захочете передати до масиву кожне слово з такого тексту:

Демонстраційний   текст  з     додатковими  пробілами

 

Якщо ви будете використовувати пробіл в якості роздільника, тоді ваш масив буде містити також небажані додаткові пробіли. Для вирішення цієї проблеми можна попередньо підготувати текст перед обробкою. У цьому випадку потрібно замінити всі додаткові пробіли одним простим пробілом. Використовуючи функцію preg_replace, ви можете видалити небажані пробіли за допомогою наступного коду:

<?php
$string = preg_replace('/\s+/', ' ', $string);
?>

 

Тепер ви можете обробити текст таким чином:

<?php
$string = '  Демонстраційний   текст  з     додатковими  пробілами      ';
$string = trim($string);
$string = preg_replace('/\s+/', ' ', $string);
$delimiter = ' ';
$itemList = explode($delimiter, $string);
var_dump($itemList);
// Результат: array(5) { [0]=> string(30) "Демонстраційний" [1]=> string(10) "текст" [2]=> string(2) "з" [3]=> string(22) "додатковими" [4]=> string(18) "пробілами" }
?>

 

Тепер згадаємо третій, необов’язковий, параметр функції explode(). Цей параметр встановлює обмеження максимального розміру масиву. Якщо ви напишете такий код:

<?php
$itemList = explode($delimiter, $string, 3);
?>

 

Тоді розмір масиву буде обмежено 3-ма елементами, а ті елементи, що не вміщаються в ліміт, будуть об’єднані у останньому елементі. Тобто, вийде такий результат:

array(3) { [0]=> string(30) "Демонстраційний" [1]=> string(10) "текст" [2]=> string(44) "з додатковими пробілами" }

 

 

Заміна рядків у PHP

Однією з найважливіших і найбільш часто використовуваних маніпуляцій з рядками в PHP є функція заміни рядків. Ви можете замінити всі елементи в рядку або лише деякі з них. Ви можете обмежити заміну лише частиною вихідного рядка. Крім того, ви можете зробити заміну рядка використовуючи регулярні вирази.

PHP має наступні вбудовані функції маніпулювання рядками, використовуючи заміну:

str_replace
str_ireplace
preg_replace
strtr

 

 

Давайте детальніше розглянемо ці функції.

 

str_replace

Ця функція замінює всі входження рядка пошуку на рядок заміни. Синтаксис функції str_replace такий:

str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

 

  • search – значення для пошуку. Для декількох значень можна використовувати масив.
  • replace – рядок заміни, його буде використано для заміни шуканих значень search. Для декількох значень можна використовувати масив.
  • subject – рядок або масив, в якому проводиться пошук і заміна. Якщо subject є масивом, то пошук з заміною буде здійснюватися над кожним елементом subject, а результатом функції також буде масив.
  • count – якщо цей параметр переданий, тоді він буде обмежувати кількість проведених замін.

 

 

Спочатку ми визначаємо рядок, який потрібно замінити, а в якості другого параметра визначаємо новий рядок. Останнім обов’язковим параметром є сам основний рядок, в якому потрібно виконати заміну. Ось приклад використання функції str_replace:

<?php
$originalString = "Мені подобається червоний колір, у мене є червоний автомобіль та червоний велосипед.";
$newString = str_replace("червоний", "зелений", $originalString);
echo $originalString . "<br>";
echo $newString . "<br>";
?>

 

Результатом буде наступне:

Мені подобається червоний колір, у мене є червоний автомобіль та червоний велосипед.
Мені подобається зелений колір, у мене є зелений автомобіль та зелений велосипед.

 

 

str_ireplace

Ця функція дуже схожа на str_replace, але вона нечутлива до регістру.

 

 

preg_replace

Ця функція виконує пошук і заміну з використанням регулярних виразів. Синтаксис функції наступний:

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

 

  • pattern – регулярний вираз. Може бути як рядком, так і масивом рядків.
  • replacement – рядок або масив рядків для заміни.
  • subject – рядок або масив рядків для пошуку та заміни.
  • limit – максимально можлива кількість замін кожного виразу для кожного рядка subject. За замовчуванням дорівнює -1 (без обмежень).
  • count – якщо параметр вказано, то ця змінна буде заповнена кількістю проведених замін.

 

 

Приклад використання функції (видалення зайвих пробілів в рядку):

<?php
$str = '  Тест   №1';
$str = preg_replace('/\s\s+/', ' ', $str);
echo $str;
// Результат: Тест №1
?>

 

 

strtr

Ця функція замінює задані символи або замінює підрядки
Синтаксис функції:

strtr ( string $str , string $from , string $to )
або
strtr ( string $str , array $replace_pairs )

 

  • str – рядок для заміни (string).
  • from – рядок (string), який буде замінений на рядок to.
  • to – рядок (string), що замінює рядок from.
  • replace_pairs – параметр може бути використаний замість to і from, в цьому випадку він є масивом (array) та має форму array('from' => 'to', ...).

 

Приклад використання:

<?php
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
// Результат: hello all, I said hi
?>

 

 

Recent Posts

Чому обрати освіту за кордоном: переваги для майбутнього вашої дитини

Навчання за кордоном вже давно асоціюється з якісною освітою, новими можливостями та безліччю перспектив. Але…

1 день ago

Як вибрати майстра для перетяжки меблів?

Вибір майстра для ремонту та перетяжки меблів – завдання, яке потребує вдумливого підходу. Адже від…

2 дні ago

Що краще вибрати для хостингу: сервер VPS Windows чи VPS Linux?

Вибір ідеального хостингу під свій сайт може бути досить заплутаною справою, особливо коли існує багато…

1 тиждень ago

Лоуренс Пітер

Щоб уникати помилок, потрібно набиратися досвіду; щоб набиратися досвіду, потрібно робити помилки Лоуренс Пітер  

2 тижні ago

Що таке Чорне СЕО (Black Hat SEO) — вся потрібна інформація

Коротке визначення Чорного SEO Чорне СЕО (або Чорна оптимізація) — це будь-яка практика, метою якої…

2 тижні ago

Права категорії C: кому вони потрібні та як їх отримати?

Отримання прав водія категорії C відкриває двері до професійної діяльності, пов'язаної з керуванням вантажними автомобілями.…

3 тижні ago