Строковые функции PHP. Конкатенация строк PHP

Строки являются основными переменными в РНР, они выступают основными посредниками при операциях с файлами и базами данных, с браузерами и серверами. Можно сказать, что работа со строками — это основная задача РНР. Строки в PHP — одни из самых универсальных объектов и работа со строками при решении задач, связанных с веб-сайтами, является весьма приоритетной. Как мы уже видели, любой, сколь угодно сложный объект можно упаковать в строку. Строка может содержать абсолютно любые символы с кодами от 0 до 255 включительно. Нет никакого специального маркера "конца строки". А значит, длина строки во внутреннем представлении PHP хранится где-то отдельно. Наконец, из-за слабого контроля типов в PHP, строка может содержать (и часто содержит) число, причем с ней можно работать, как с числом: прибавлять другие числа, умножать и т. д. При этом все преобразования (в десятичной системе) производятся автоматически. Существуют также функции, преобразующие число, записанное в различных системах счисления (например, в восьмеричной), в обычное представление, и наоборот.

Строковые значения должны быть заключены в двойные или одинарные кавычки. Вид кавычек в РНР, в отличие от JavaScript, играет важную роль.

Двойные и одинарные кавычки PHP

В двойных кавычках помимо обычных видемых и служебных символов могут находиться имена переменных (идентификаторы, начинающиеся с символа $), а также теги HTML. При выводе таких строк на экран с помощью оператора echo интерпретатор РНР заменяет идентификаторы переменных их значениями, а теги HTML интерпретируются браузером.

В браузере служебные символы, такие как \n (перевод строки) и \t (табуляция), не выполняют своей функции, но отображаются в виде пробела.

Если строковое значение заключено в одинарные кавычки, то служебные символы отображаются в виде пар \n, \t и т.д. При этом теги HTML интерпретируются браузером.

Пример:

<?php
$x="Привет";
$y="$x всем!";
$z='$x всем!';
echo $y; //вывод: Привет всем!
echo '<br>';
echo $z; //вывод: $x всем!
?>

В окне веб-браузера это будет выглядеть ТАК.

Длинные последовательности символов, которые в текстовом редакторе занимают нескодько строк, можно задать с помощью так называемого heredoc-синтаксиса, не используя кавычек:

Переменная = <<<Метка

текст

Метка;

Пример:

<?php
$x=<<<MYDIN //где, MYDIN-МЕТКА
Широка
страна моя
родная!
MYDIN;
echo $x; //вывод: Широка страна моя родная!
?>

В окне веб-браузера это будет выглядеть ТАК.

При работе с модулем РНР CLI (с интерфейсом командной строки) текст на экране будет иметь такое же расположение, что и между метками в РНР-коде. В окне браузера он будет отображен в виде одной или нескольких строк в зависимости от ширины клиентской области браузера. При этом части текста, расположенные в РНР-коде в различных строках, будут отображаться в одной строке через пробел.

Рассмотренный выше пример в окне браузера отображается точно так же, как и следующий код:

<?php
$x="
Широка
страна моя
родная!
";
echo $x;
?>

В окне веб-браузера это будет выглядеть ТАК.

Внимание! При использовании heredoc-синтаксиса небходимо соблюдать следующие правила:

Чтобы в строке, обрамленной двойными кавычками, отключить интерпретацию таких служебных символов, как двойные кавычки и $, перед ними следует указать обратный слэш(\).

Пример:

<?php
$x=5;
echo "Роман А.Н. Толстого \"Война и мир\"";
echo '<br>';
echo "\$x=$x";
echo '<br>';
echo "\$x='$x'";
echo '<br>';
echo "$x=$x";
?>

В окне веб-браузера это будет выглядеть ТАК.

Cтроки в одинарных кавычках храняться как есть, за исключением пары \', которая хранится как символ апострофа(одинарная кавычка). В строках могут встречаться теги HTML, которые позволяют отформатировать выводимый текст, а также выполнить другие действия. Интерпретатор РНР не интерпретирует их, а сохраняет как есть. С помощью оператора echo они направляются браузеру, который выполняет соответствующий HTML-код. Поскольку внутри HTML-кода могут использоваться кавычки различных видов, при формировании строк в РНР следует быть внимательным, чтобы правильно их расставлять и сочетать друг с другом.

Конкатенация строк PHP

Самая, пожалуй, распространенная операция со строками — это их конкатенация, или присоединение к одной строке другой. Для конкатенации строк ввели специальный оператор "." (точка).

Пример:

<?php
$a= "Широка";
$b= $a." страна";
$b="$a страна";
$b.=" моя родная!";
echo $b;
?>

В окне веб-браузера это будет выглядеть ТАК.

Оператор "." всегда воспринимает свои операнды как строки и возвращает строку. В случае, если один из операндов не может быть переведен в строковое представление, т. е. если это массив или объект, то он воспринимается как строки array и object соответственно. Вообще говоря, это правило применимо не только при сцеплении строк, но и при передаче такого операнда в какую-нибудь стандартную функцию, которой требуется строка.

Например, следующие команды выведут слово array:

<?php
$a=array(10,20,30);
echo $a // array
?>

В окне веб-браузера это будет выглядеть ТАК.

Есть и другой, более специализированный, способ конкатенации строк. Он обычно используется, когда значения строковых или числовых переменных перемежаются с обычными словами. Если, к примеру, у нас в $day хранится текущее число, в $month — название месяца и в $year — год, то вывести строку вида "Сегодня 8 января 2009 года" можно так:

<?php
$day=8;
$month=" января";
$year=2009;
echo "Сегодня $day $month $year года";
?>

В окне веб-браузера это будет выглядеть ТАК.

При этом в строку, вырабатываемую инструкцией echo, автоматически в нужных местах вставятся значения наших переменных. Это позволяет констатировать тот факт, что в PHP все переменные начинаются с $.

Преобразование строк PHP

Для преобразования символьных строк в РНР имеется большое количество встроенных функций. Здесь мы рассмотрим лишь несколько наиболее важных из них.

В окне веб-браузера это будет выглядеть ТАК.

Работа с символами PHP

Строки по своей сути являются массивами символов, завершающихся нулевым символом, поэтому к любому символу строки можно обратиться по его индексу, который начинается с 0:

$str[0], $str[1], . . . , $str[n];

Пример:

<?php
$str = "Из далека долго, течет река Волга, течет ...";
echo $str[0]."<br>";//выводит: И
echo $str[1]."<br>";//выводит: з
echo $str[2]."<br>";//выводит: (пробел)
echo $str[3]; //выводит: д
?>

В окне веб-браузера это будет выглядеть ТАК.

Некоторые базы данных формируют отчет или дамп базы данных, размещая периодически через определенное число строк символы перевода страницы(символ с кодом 12 из таблицы ASCII-кодов), что затрудняет автоматическую обработку таких данных. проблему можно решить, если заменить этот символ переводом строки, используя ранее рассмотренную функцию str_replace(). Но символ перевода страницы не так просто набрать с клавиатуры. В Windows символы перевода страницы предваряют символом возврата каретки — \r.

Для решения таких задач в РНР введена функция chr(), которая возвращает символ по его ASCII-коду и имеет следующий синтаксис:

chr (параметр_ ascii)

Пример:

<?php
$text = "Из далека долго, течет река Волга, течет ...";
$str=str_replace(chr(36), "\n", $text);/*выводит: Из далека долго, течет река Волга, течет ...*/
echo $str. '<br>';
$ctr=chr(36);// выводит: $
echo $ctr;
?>

В окне веб-браузера это будет выглядеть ТАК.

В файлах могут быть различные управляющие символы, не воспроизводимые редактором. Для определения их значения используется функция ord(), которая возвращает ASCII-код символа:

ord(значение)

Если в значение содержится более одного символа, ASCII-код будет возвращен только для первого.

Пример:

<?php
$str=ord('$');//выводит 36
echo $str;
?>

В окне веб-браузера это будет выглядеть ТАК.

Еще одной функцией, позволяющей получить статистическое распределение символов в строке, является функция count_chars().

count_chars(строка [, int mode]) — подсчитывает количество вхождений каждого из символов с ASII кодами в диапазоне (0..255) в строку строка и возвращает эту информацию в различных формата. Необязательный аргумент mode по умолчанию равен 0. В зависимости от его значения возвращается:

Пример:

<?php
$str = "Из далека долго, течет река Волга, течет ...";
$result=count_chars($str, 0);
for($i=0; $i<count($result); $i++) {
if($result[$i]!=0)
echo "\"" , chr($i) , "\"<pre> встречается в строке $result[$i] раз(а).\n";
}
?>

В окне веб-браузера это будет выглядеть ТАК.




назадвверхвперед
Rambler's Top100