 
		
											Уроки 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
?>
 
				 
			 
															 
															 
															 
															 
															 
															 
															 
															 
															 
															 
			 
			 
			