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