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

 

 

This post was last modified on 06/04/2019 19:35

Последние посты

Фридрих Ницше

Если вы решили действовать — закройте двери для сомнений Фридрих Ницше  

26/05/2024

Стивен Кинг

Любая проблема в жизни — это проверка наших возможностей Стивен Кинг  

21/05/2024

Уинстон Черчилль

Пессимист видит трудности в каждой возможности; оптимист в любых трудностях видит возможности Сэр Уинстон Леонард…

19/05/2024

Конфуций

Когда вам покажется, что цель недостижима, не изменяйте цель — изменяйте свой план действий Конфуций…

12/05/2024

Чарлз Дарвин

Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к…

11/05/2024

Что такое тег canvas в HTML5 и зачем он нужен?

Элемент <canvas> появился только в HTML5 и используется для динамического рисования графики на веб-странице с…

10/05/2024