Строковые функции PHP. Форматирование строк PHP. Подсветка кода РНР. Преобразование кодировок PHP. Работа с URL. Работа с путями к файлам и каталогам

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

Разбивка строк на подстроки

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

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

Для форматирования текстовых строк, выводимых в окно браузера оператором echo, часто используется HTML и каскадные таблицы стилей. Служебные символы \n (перевод строки) и \t (табуляция) также можно использовать в строках. Если они находятся в строке, заключенной в одинарные кавычки, то при выводе этой строки оператором echo эти символы не будут работать по своему назначению и будут видны на экране. В случае двойных кавычек они, также не сработают, но отобразяться в виде пробелов. Чтобы заставить их функционировать, то строку с двойными кавычками следует начать тегом <pre>.

Пример:

<?php
$a = "<pre> Из далека долго, \n течет река Волга, течет ...";
echo $a ;
?>

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

С целью форматирования можно применять специальные функции РНР printf() и sprintf(). Если вы используете РНР CLI, работающий в режиме командной строки, то специальные функции являются единственным средством форматирования строк. На практике часто приходится форматировать строки, содержащие не только знаки препинания, но и числа и значения переменных. При этом числа можно представлять в различных системах счисления, а в десятичной системе — в различных видах. В функциях printf() и sprintf() можно указать шаблон, в соответствии с которым будет отформатирована строка. Эти функции имеют одинаковый синтаксис, но отличаются действием и возвращаемым значением.

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

%ЗаполнительВыравниваниеДлинаТочностьТип

Рассмотрим эти необязательные элементы.

Рассмотрим пример.

<?php
$day = 11;
$month = 1;
$year = 2009;
printf("%02d/%02d/%04d", $day, $month, $year);
?>

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

Еще один пример.

<?php
$a=14.346;
$a1=254.6;
$a2=1246.37;
$b= "Иванов";
$b1= "Петров";
$b2= "Сидоров";
printf("<pre> <b> Платежная ведомость </b> \n");
printf("%'.-12s%'.10.2f руб.\n", $b,$a);
printf("%'.-12s%'.10.2f руб.\n", $b1,$a1);
printf("%'.-12s%'.10.2f руб.\n", $b2,$a2);
?>

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

В данном примере использовался тег <pre>, который обеспечил отображение браузером строк в соответствии с их предварительным форматированием. Здесь подадобились служебные символы \n для перехода на другую строку. В качестве заполнителя была использована точка ('.). Фамилия выравнивалась по левому краю (-) поля шириной 12 символов с заполнением в виде точки ('.). Таким образом, описатель преобразования для строковых значений имеет вид: %'.-12s.

Числа представлялись с десятичной точкой и двумя разрядами после нее. Они выравнивались по правому краю поля из 10 символов, а в качестве заполнителя использовалась точка. Таким образом, описатель преобразования чисел имеет вид: %'.10.2f .

Аналогичный результат можно получить, используя функцию sprintf() для создания отформатированной строки и оператор echo для ее вывода.

<?php
$a=14.346;
$a1=254.6;
$a2=1246.372;
$b= "Иванов";
$b1= "Петров";
$b2= "Сидоров";
$str="<pre> <b> Платежная ведомость </b> \n";
$str.="%'.-12s%'.10.2f руб.\n";
$str= sprintf($str,$b,$a);
$str.="%'.-12s%'.10.2f руб.\n";
$str= sprintf($str,$b1,$a1);
$str.="%'.-12s%'.10.2f руб.\n";
echo sprintf($str,$b2,$a2);
?>

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

Оператор .= обеспечивает склейку текущего строкового значения переменной, расположенной слева от него, с тем, которое указано справа от этого оператора. Порядок описателей в форматируемой строке соответствует порядку других параметров функций printf() и sprintf(). Для РНР версии 4.0.6 и старше можно изменять этот порядок и даже использовать один и тот же описатель несколько раз. Для этого в еаждом описателесразу же за символом % следует указать номер, обратный слэш или символ $ (далее могут следовать другие элементы). Этот номер соответствует порядковому номеру последующих аргументов функций printf() и sprintf().

Пример:

<?php
$a= "широка";
$b= " страна";
$b1=" моя родная!";
echo ucfirst(sprintf("%1\$s %2\$s %3\$s", $a, $b, $b1));
?>

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

В результате выполнения этого кода будет выведена строка "Широка страна моя родная!". Функция ucfirst() использовалась для того, чтобы отформатированная строка начиналась с прописной (заглавной) буквы.

Подсветка кода РНР

& Во многих веб-приложениях требуется подсветить РНР-код: такая задача часто возникает при разработке форумов, посвященных вопросам РНР-программирования, при динамическом отображении РНР-скриптов на странице ресурса, в отладочных веб-приложениях и т.д. Для этого предназначена функция highlight_string().

Примечание. Помимо стандартной функции highlight_string(), обесвечивающей подсветку синтаксиса кода переданной в качестве параметра строки, существует также функция highlight_file(), обеспечивающая подсветку синтаксиса файла, имя которого передается в качестве аргумента.

<?php
//Строка, содержащая скрипт РНР
$code='<?php
if(!$flag){
//пишем какой-либо код
echo "Hello";
$var=1;
}
else break;
?>';
//вызываем функцию highlight_string()
highlight_string($code);
?>

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

Примечание. Стандартные функции highlight_string() и highlight_file() подсвечивают синтаксис только в том случае, если он заключен в теги <?php и ?>.

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

Так сложилось, что в русскоязычном секторе Интернета используется большое количество кодировок. Для преобразования строк из одной кодировки в другую предназначена функция convert_cyr_string().

convert_cyr_string(строка, кодировка1, кодировка2) — преобразует строку из одной кодировки кириллицы в другую. Она переводит строку строка из кодировки кодировка1 в кодировку кодировка2. Значения кодировка1 и кодировка2 это одиночные символы, определяющий кодировку:

Для примера перекодируем слово "определяющий" из кодировки windows-1251 в koi8-r и обратно:

<?php
$str1 = "определяющий";
$str2 = convert_cyr_string($str1,"w","k");
echo ("Результат преобразования '$str1' в кодировку koi8-r: '$str2'");
echo ("<br>");
$str3 = convert_cyr_string($str2,"k","w");
echo ("Результат возврата '$str2' в кодировку Windows-1251:'$str3'");
?>

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

Работа с URL

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

Работа с путями к файлам и каталогам

Основной функцией при работе с путями к файлам и каталогам является функция  pathinfo().

pathinfo(путь) — принимает путь к файлу путь и возвращает ассоциированный массив, хранящий в своих элементах путь, по которому расположен файл, имя файла и его расширение.

Пример:

<?php
$path_s=pathinfo("D:\sevidi\index.html");
echo $path_s["dirname"]. "<br>"; //выводит D:\sevidi
echo $path_s["basename"]. "<br>"; //выводит index.html
echo $path_s["extension"]. "<br>";  //выводит html
?>

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

Для того, чтобы определить абсолютный путь к файлу необходимый для функции pathinfo(), можно воспользоваться функцией realpath().

realpath(путь) — принимает относительный путь путь и возвращает абсолютный.

При работе сфункцией следует помнить, что точкой (".") обозначается текущий каталог, а двумя точками("..") — каталог на уровень выше.

Пример:

<?php
echo realpath(".");
echo realpath("../index.html"); //выводит D:\sevidi
?>

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

При разработке веб-приложений чаще требуется путь к текущей странице от Document Root, который можно узнать, к элементу суперглобального массива $_SERVER['PHP_SELF"].

Для извлечения имени файла существует отдельная функция basename().

basename(путь [, расширение_файла]) — принимает путь путь и необязательное расширение файла расширение_файла. Эта функция вернет имя файла, чей путь был передан в качестве параметра. Если имя файла имеетрасширение оно будет отброшено.

Пример:

<?php
$path="home/html/index.html";
echo basename($path). "<br>"; //выведет index.html
echo basename($path, ".html"); //выведет index
?>

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

Функция dirname() извлекает из пути каталог.

dirname(путь) — принимает путь путь и возвращает только каталог.

Пример:

<?php
$path="C:\www\html\index.html";
echo dirname($path); //возвращает C:\www\html
?>

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




  • Другие |
назадвверхвперед
Rambler's Top100