Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

Манипулирование строками в PHP

Для работы со строками в PHP существует целый ряд специализированных функций.

Форматирование строк

В PHP есть две функции, позволяющие отформатировать данные перед выводом:

  • printf() - выводит отформатированную строку в окно браузера;
  • sprintf() - выводит отформатированную строку в переменную. Далее можно использовать для записи в файл с помощью функции fputs().

Этим функциям передаются строка управления форматом и сами форматируемые данные. Строка управления форматом включает в себя обычные символы, которые прямо копируются в результат, и определители преобразования. Каждый определитель преобразования начинается с символа процента (%) и включает следующие элементы:

  • указатель заполнения используется, если необходимо увеличить размер строки. По умолчанию выполняется заполнение пробелами. Можно указать и 0. Перед любым другим символом заполнения надо поставить одинарную кавычку ('). Необязательный параметр;
  • указатель выравнивания, заданный знаком минус (-), определяет выравнивание влево. По умолчанию выполняется выравнивание вправо. Необязательный параметр;
  • указатель ширины задает количество символов, которое должно содержаться в выводимых данных. Необязательный параметр;
  • указатель точности задает количество десятичных знаков, отображаемых для чисел с плавающей запятой. Необязательный параметр;
  • указатель типа задает тип, в соответствии с которым следует обрабатывать выводимые данные. Возможные значения:
    dдесятичное число
    bдвоичное число
    cASCII-эквивалент
    fчисло с плавающей точкой двойной точности
    oвосьмеричное число
    sстрока
    xшестнадцатеричное число в нижнем регистре
    Xшестнадцатеричное число в верхнем регистре

Пример

<html>
<head>
<title>Форматирование вывода в окно браузера</title>
</head>
<body>
<?php
$товары = array ("помидоры" => 15, "огурцы" => 12, "картофель" => 10);
echo  "<pre>";
printf ("%-25s%25s\n%'=50s\n", "Наименование", "Цена", "");
foreach ($товары as $наим => $цена)
	printf ("%'.-25s%'.22.2f\n", $наим, $цена);
echo  "</pre>";
?>
</body>
</html>
РЕЗУЛЬТАТ:
Наименование                                  Цена
==================================================
помидоры.....................................15.00
огурцы.......................................12.00
картофель....................................10.00

Анализ строк

PHP содержит множество функций, дающих информацию о строках. Наиболее употребимыми являются:

  • strlen() - определяет длину строки.
  • strstr() - определяет наличие подстроки в строке. Аргументы: исходная строка и искомая подстрока. Если такой подстроки в строке нет, функция возвращает false. Если подстрока в строке есть, функция возвращает часть исходной строки, которая начинается с искомой подстроки.
    echo strstr ("Кто там?", "там"); // выводит "там?"
    
  • stristr() - работает так же, как и strstr(), но не различает регистры.
  • strpos() - определяет позицию подстроки в строке. Аргументы: исходная строка и искомая подстрока. Если такой подстроки в строке нет, функция возвращает false. Если подстрока в строке есть, функция возвращает номер символа, с которого начинается подстрока.
    echo strpos ("Кто там?", "там"); // выводит "4"
    
  • substr() - возвращает часть строки, ограниченную параметрами. Аргументы: исходная строка, начальная позиция, длина подстроки (необязательно).
    Если начальная позиция отрицательна, то отсчет идет от конца строки.
    Если длина не указана, возвращается остаток строки.
    Если длина отрицательна, то подстрока завершается на указанной позиции от конца строки.
    echo substr ("раз-два-три", 4, 3);  // выводит "два"
    echo substr ("раз-два-три", 4);     // выводит "два-три"
    echo substr ("раз-два-три", -3, 3); // выводит "три"
    echo substr ("раз-два-три", 4, -3); // выводит "два-"
    

Управление строками

PHP содержит множество функций управления строками. Наиболее употребимыми являются:

  • ltrim(), chop(), trim() - удаляют все разделители соответственно в начале строки, в конце строки, в начале и конце строки. К разделителям относятся следующие символы:
    "\n" (новая строка), "\r" (возврат каретки),
    "\t" (табуляция), простой пробел.
  • str_replace() - заменяет все экземпляры указанной подстроки в строке на новую подстроку. Аргументы: заменяемая подстрока, замещающая подстрока, исходная строка. Например:
    echo str_replace ("там", "тут", "Кто там?"); // выводит "Кто тут?"
    
  • substr_replace() - заменяет часть строки, ограниченную параметрами. Аргументы: исходная строка, замещающая подстрока, начальная позиция, длина заменяемой подстроки (необязательно). Если начальная позиция отрицательна, то отсчет идет от конца строки. Если длина не указана, используется вся длина строки. Если длина отрицательна, то замена завершается на указанной позиции от конца строки. Например:
    echo substr_replace ("раз-два-три", "пять", 4, 3);  // выводит "раз-пять-три"
    echo substr_replace ("раз-два-три", "пять", 4);     // выводит "раз-пять"
    echo substr_replace ("раз-два-три", "пять", -3, 3); // выводит "раз-два-пять"
    echo substr_replace ("раз-два-три", "пять", 4, -3); // выводит "раз-пятьтри"
    
  • strtoupper() - переводит символы строки в верхний регистр.
  • strtolower() - переводит символы строки в нижний регистр.
  • ucwords() - переводит в верхний регистр первый символ каждого слова.
  • explode() - разбивает строку на массив. Аргументы: строка-разделитель и исходная строка. Например:
    $строка = "Голова моя машет ушами";
    $массив = explode(" ",$str);
    // count ($массив) == 4
    // $массив[0] == "Голова"
    // $массив[1] == "моя"
    // $массив[2] == "машет"
    // $массив[3] == "ушами"
    
  • implode() -объединяет элементы массива со строкой.
    $array = array('lastname', 'email', 'phone');
    $comma_separated = implode(",", $array);
    print $comma_separated; // lastname,email,phone
    

Управляющие последовательности

Если строка заключена в двойные кавычки ("), PHP распознает большее количество управляющих последовательностей для специальных символов:

Последовательность Значение
\n новая строка (LF или 0x0A (10) в ASCII)
\r возврат каретки (CR или 0x0D (13) в ASCII)
\t горизонтальная табуляция (HT или 0x09 (9) в ASCII)
\v вертикальная табуляция (VT или 0x0B (11) в ASCII) (с версии PHP 5.2.5)
\e escape-знак (ESC или 0x1B (27) в ASCII) (с версии PHP 5.4.4)
\f подача страницы (FF или 0x0C (12) в ASCII) (с версии PHP 5.2.5)
\\ обратная косая черта
\$ знак доллара
\" двойная кавычка
\[0-7]{1,3} последовательность символов, соответствующая регулярному выражению символа в восьмеричной системе счисления
\x[0-9A-Fa-f]{1,2} последовательность символов, соответствующая регулярному выражению символа в шестнадцатеричной системе счисления

Справочник функций работы со строками в PHP

Читать дальше: Объектное программирование на PHP


.