Строки в php функции работы со строками. Задачи на функции работы со строками в PHP

  • 05.04.2024

Основные в php строковые функции необходимо знать любому веб-программисту, так как строка в РНР — это самый главный тип данных. Длина строки практически ничем не ограничена (разве что размером памяти, занимаемым сценарием и физическим остатком ресурсов компьютера), поэтому в строку можно прочитать файл среднего размера и обработать его. Также к строке можно привести любой объект с помощью функции serialize().

Основные строковые функции PHP

Перечень полезных строковых функций PHP удобнее всего представить в виде таблицы. Функции приводятся без параметров — просто название функции и ее краткое описание. Далее мы рассмотрим некоторые из этих функций отдельно.

Функция Описание
chop() Удаляет пробельные символы в конце строки
convert_cyr_string() Используется для преобразования кодировок русского языка
explode() Выделяет подстроки (поля) из строки
HtmlSpecialChars() Заменяет специальные символы их HTML-эквивалентами, например < будет заменено эквивалентом <
ltrim() Похожа на trim(), но удаляет пробельные символы только в начале строки
md5() Кодирует указанную строку с помощью алгоритма MD5
nl2br() Заменяет все символы новой строки (\п) тегом
. Очень полезная функция в веб-программировании
pack() Запаковывает бинарные данные
str_replace() Используется для замены в строке
strcasecmp() To же, что и предыдущая функция, но производит сравнение без учета регистра символов
strcmp() Используется для сравнения строк
strip_tags() Удаляет все HTML-теги из строки
strlen() Определяет длину строки
strpos() Производит поиск подстроки в строке
strtolower() Преобразует все символы строки в нижний регистр
strtoupper() Преобразует все символы строки в верхний регистр
substr() Возвращает определенную подстроку
trim() Функция помогает избавиться от пробельных символов в начале и в конце строки
unpack() Распаковывает бинарные данные
urldecode() Раскодирует строку, которая была ранее закодирована с помощью urlencode()
urlencode() Кодирует строку для ее передачи в URL (символы, которые не могут быть представлены в URL, например символы русского языка, заменяются их кодами)
wordwrap() Используется для разбивки текста

Определение длины строки в PHP

Функция strlen используется очень часто, поскольку значение длины строки требуется для многих ее преобразований. Использовать ее очень просто — передайте ей строку, а функция вернет количество символов, например:

$str = "Привет!"; echo strlen($str);

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

Для поиска в строке используется функция strpos(). Ей нужно передать три параметра — строку, в которой нужно произвести поиск, искомую строку и позицию начальной строки, с которой нужно начинать поиск. Если поиск нужно начать с начала строки, то позицию можно не указывать. Функция возвращает позицию, с которой начинается вхождение искомой строки в начальную строку. Если искомая строка не найдена, функция возвращает false.

Вот пример использования функции strops():

$position = strpos("Привет, мир", "мир"); if ($position === false) echo "Искомая подстрока не найдена"; else echo "Искомая строка начинается с позиции $position";

Что касается замены текста, то для ее осуществления используется функция str_replace(). Функция такого вида str_replace(строка1, строка2, строка3) – заменяет в строка3 все вхождения строка1 на строка2.

Echo str_replace("привет", "пока", "При встрече я говорю привет");

Сравнение строк в PHP

Функции strcmp() strcasecmp() используются для сравнения строк. Первая функция осуществляет сравнение строк с учетом регистра символов, а вторая — без учета. Функции возвращают следующие значения:

  • 0, если лексикографически строки равны;
  • -1, если первая строка лексикографически меньше, чем вторая (например строка «Арбуз» лексикографически меньше, чем строка «Борис»);
  • 1, если первая строка лексикографически больше, чем вторая (например строка «Борис2» лексикографически больше, чем «Борис1»).

Что такое лексикографическое сравнение строк? Представьте, что у вас есть два слова, и вам нужно расположить их по алфавиту в порядке возрастания. Возьмем те же слова «Арбуз» и «Борис». Первое слово начинается на букву «А», которая в алфавите следует раньше буквы «Б», на которую начинается второе слово. Поэтому первая строка будет лексикографически меньше второй строки.

Работа с подстроками в PHP

Функция substr(строка, число1, число2) возвращает подстроку, начинающуюся с позиции число1 и длиной число2. Попробуйте выполнить код:

Echo substr("Hello, world!", 2, 4);

Первый параметр — это исходная строка. Второй параметр — начало подстроки, а третий параметр (он н еобязательный) — длина подстроки. Если третий параметр не задан, то подстрока возвращается до конца исходной строки.

$sub = substr("машина", 4); //возвращает "на" $sub = substr("машина", 2, 4); //возвращает "шина"

Очень мощной является функция explode(), позволяющая извлечь все подстроки, разделенные разделителем. Предположим, что у нас есть вот такая строка: «Строка1;Строка2;Строка3».

$str = "Строка1;Строка2;Строка3";

При вызове explode() мы должны указать два параметра: разделитель и исходная строка.

$A = explode(";", $str);

Функция возвращает список, содержащий наши строки.

Array ( => Строка1 => Строка2 => Строка3)

На этом пока все, но в PHP есть и другие полезные строковые функции, которые активно применяются веб-программистами на практике. О них я обязательно расскажу в одной из своих новых статей.

Функции работы со строками в PHP was last modified: Март 3rd, 2016 by Admin

Программистам очень часто приходится иметь дело с различными функциями работы со строками в php. В разных справочниках представлены все функции, но я хотел бы ограничиться только основными из них.

PHP функция substr - получить часть строки

Когда из строки вам необходимо выделить отрывок заданной длины начиная с заданной позиции, на помощь приходит функция substr. В этой функции через запятую передаются: текст, стартовая позиция и количество символов. Последний параметр не обязателен, и в случае его отсутствия результатом работы функции будет отрывок исходного текста от стартовой позиции до конца строки.

PHP функция strlen - узнать длину строки

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

PHP функция trim - убрать лишние пробелы по краям строки

Функция trim удаляет по краям строки любые пробельные символы, в том числе и символ перевода строки. Так же существуют функции rtrim и ltrim, которые удаляют пробелы вконце иили вначале строки.

PHP функция strpos - осуществляет поиск в строке

функция strpos ищет подстроку в строке и в случае успеха возвращает позицию начала этой подстроки. После нахождения первой подстроки поиск прекращается. Порядок аргументов в функции, как вы уже догодались, таков: исходная строка, подстрока, стартовая позиция. Третий параметр не обязателен, но постарайтесь запомнить что он есть.

PHP функция strip_tags - удаляет тэги HTML и PHP из строки

Функция strip_tags возвращает строку, очищенную от тегов html и php. Она вам пригодится, когда вы будете писать модуль комментариев на свой сайт, что бы не оставить злоумышленикам возможности взломать ваш сайт через форму. html и php должны быть удалены"; echo strip_tags($text); echo strip_tags($text,"");//не удалять теги em ?> Первым аргуменом функции идет исходны текст, а вторым теги, которые не нжно удалять.

PHP функция strtolower - переводит строку в нижний регистр

PHP функция strtoupper - переводит строку в верхний регистр

 Если этот сайт оказался вам полезен, вы можете помочь в его развитии, поставив

Вставляет HTML код разрыва строки перед каждым переводом строки

  • number_format - Форматирует число с разделением групп
  • ord - Возвращает ASCII код символа
  • parse_str - Разбирает строку в переменные
  • print - Выводит строку
  • printf
  • quoted_printable_decode - Раскодирует строку, закодированную методом quoted printable
  • quotemeta - Экранирует специальные символы
  • rtrim - Удаляет пробелы из конца строки
  • sha1 - Возвращает SHA1 хэш строки
  • sha1_file - Возвращает SHA1 хэш файла
  • similar_text - Вычисляет степень похожести двух строк
  • soundex - Возвращает ключ soundex для строки
  • sprintf
  • sscanf - Разбирает строку в соответствии с заданным форматом
  • strcasecmp - Сравнение строк без учета регистра, безопасное для данных в двоичной форме
  • strcmp - Сравнение строк, безопасное для данных в двоичной форме
  • strcoll - Сравнение строк с учетом текущей локали
  • strcspn - Возвращает длину участка в начале строки, не соответствующего маске
  • stripcslashes - Удаляет экранирование символов, произведенное функцией addcslashes()
  • stripos - Возвращает позицию первого вхождения подстроки без учета регистра
  • stripslashes - Удаляет экранирование символов, произведенное функцией addslashes()
  • strip_tags - Удаляет HTML и PHP тэги из строки
  • stristr - Аналог функции strstr, но независит от регистра
  • strlen - Возвращает длину строки
  • strnatcasecmp - Сравнение строк без учета регистра с использованием алгоритма
  • strnatcmp - Сравнение строк с использованием алгоритма "естественного упорядочения"
  • strncasecmp
  • strncmp - Сравнение первых n символов строк без учета регистра, безопасное для данных в двоичной форме
  • strpos - Находит первое вхождение подстроки в строку
  • strrchr
  • strrev - Переворачивает строку
  • strripos - Возвращает позицию последнего вхождения подстроки без учета регистра
  • strrpos - Находит последнее вхождение символа в строку
  • strspn - Возвращает длину участка в начале строки, соответствующего маске
  • strstr - Находит первое вхождение подстроки
  • strtok - Разбивает строку
  • strtolower - Преобразует строку в нижний регистр
  • strtoupper - Преобразует строку в верхний регистр
  • strtr - Преобразует заданные символы
  • str_ireplace - Регистро-независимый вариант функции str_replace().
  • str_pad - Дополняет строку другой строкой до заданной длины
  • str_repeat - Возвращает повторяющуюся строку
  • str_replace - Заменяет строку поиска на строку замены
  • str_rot13 - Выполняет над строкой преобразование ROT13
  • str_shuffle - Переставляет символы в строке
  • str_split - Преобразует строку в массив
  • str_word_count - Возвращает информацию о словах, входящих в строку
  • substr - Функция возвращает часть строки
  • substr_count - Подсчитывает число вхождений подстроки в строку
  • substr_replace - Заменяет часть строки
  • trim - Удаляет пробелы из начала и конца строки
  • ucfirst - Преобразует первый символ строки в верхний регистр
  • ucwords - Преобразует в верхний регистр первый символ каждого слова в строке
  • vprintf - Выводит отформатированную строку
  • vsprintf - Возвращает отформатированную строку
  • wordwrap - Выполняет перенос строки на данное количество символов с использованием символа разрыва строки
  • Особенности операторов сравнения применительно к строкам.

    $one = 1; // Число один. $zero = 0; // Присваиваем число нуль. if ($one == "") echo 1; // Очевидно, не равно - не выводит 1. if ($zero == "") echo 2; //* Внимание! Вопреки ожиданиям печатает 2! if ("" == $zero) echo 3; //* И это тоже не поможет - печатает!.. if ("$zero" == "") echo 4; // Так правильно. if (strval($zero) == "") echo 5; // Так тоже правильно - не выводит 5. if ($zero === "") echo 6; // Лучший способ, но не действует в PHP 3.

    chop()

    Функция chop() возвращает строку после удаления из нее завершающих пропусков и символов новой строки. Синтаксис функции chop():

    string chop(string строка)

    В следующем примере функция chop() удаляет лишние символы новой строки:

    $header = "Table of Contents\n\n"; $header = chop($header); // $header = "Table of Contents"

    str_pad()

    Функция str_pad() выравнивает строку до определенной длины заданными символами и возвращает отформатированную строку. Синтаксис функции str_pad():

    string str_pad (string строка, int длина_дополнения [, string дополнение [, int тип_дополнения]])

    Если необязательный параметр дополнение не указан, строка дополняется пробелами. В противном случае строка дополняется заданными символами. По умолчанию строка дополняется справа; тем не менее, вы можете передать в параметре тип_дополнения константу STR_PAD_RIGHT, STR_PAD_LEFT или STR_PAD_BOTH, что приведет к дополнению строки в заданном направлении. Пример демонстрирует дополнение строки функцией str_pad() с параметрами по умолчанию:

    $food = "salad"; print str_pad ($food, 5): // Выводит строку "salad В следующем примере используются необязательные параметры функции str_pad(): $header = "Table of Contents"; print str_pad ($header, 5, "=+=+=", STR_PAD_BOTH); // В браузере выводится строка =+=+= Таbе of Contents=+=+="

    trim()

    Функция trim() удаляет псе пропуски с обоих краев строки и возвращает полученную строку. Синтаксис функции trim():

    string trim (string страна]

    К числу удаляемых пропусков относятся и специальные символы \n, \r, \t, \v и \0.

    ltrim()

    Функция lrim() удаляет все пропуски и специальные символы с левого края строки и возвращает полученную строку. Синтаксис функции ltrim():

    string ltrim (string строка)

    Функция удаляет те же специальные символы, что и функция trim().

    strlen()

    Определение длины строки

    Длину строки в символах можно определить при помощи функции strlen(). Синтаксис.функции strlen():

    int strlen (string строка)

    Следующий пример демонстрирует определение длины строки функцией strlen():

    $string = "hello"; $length = strlen($string); // $length = 5

    Сравнение двух строк

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

    strcmp()

    Функция strcmp() сравнивает две строки с учетом регистра символов. Синтаксис функции strcmp(): int strcmp (string строка1, string строка2)

    После завершения сравнения strcmp() возвращает одно из трех возможных значений:

    • 0, если строка1 и строка2 совпадают;
    • < 0, если строка1 меньше, чем строка2;
    • > 0, если строка2 меньше, чем строка1.

    $sthng1 = "butter"; $string2 = "butter"; if ((strcmp($string1. $string2)) == 0) : print "Strings are equivalent!"; endif; // Команда if возвращает TRUE

    strcasecmp()

    Функция strcasecmp() работает точно так же, как strcmp(), за одним исключением - регистр символов при сравнении не учитывается. Синтаксис функции strcasecmp():

    int strcasecmp (string cтpoкa1, string строка2)

    В следующем фрагменте сравниваются две одинаковые строки:

    $string1 = "butter"; $string2 = "Butter"; if ((strcmp($string1, $string2)) == 0) : print "Strings are equivalent!"; endif; // Команда if возвращает TRUE

    strspn()

    Функция strspn() возвращает длину первого сегмента строки1, содержащего символы, присутствующие в строке2. Синтаксис функции strspn():

    int strspn (string строка1, string строка2)

    Следующий фрагмент показывает, как функция strspn() используется для проверки пароля:

    $password = "12345"; if (strspn($password, "1234567890") != strlen($password)) : print "Password cannot consist solely of numbers!"; endif:

    strcspn()

    Функция strcspn() возвращает длину первого сегмента строки1, содержащего символы, отсутствующие в строке2. Синтаксис функции strcspn():

    int strcspn (string строка1, string строка2)

    В следующем фрагменте функция strcspn() используется для проверки пароля:

    $password = "12345"; if (strcspn($password, "1234567890") == 0) : print "Password cannot consist solely of numbers!"; endif;

    Обработка строковых данных без применения регулярных выражений

    При обработке больших объемов информации функции регулярных выражений сильно замедляют выполнение программы. Эти функции следует применять лишь при обработке относительно сложных строк, в которых регулярные выражения действительно необходимы. Если же анализ текста выполняется по относительно простым правилам, можно воспользоваться стандартными функциями РНР, которые заметно ускоряют обработку. Все эти функции описаны ниже.

    strtok()

    Функция strtok() разбивает строку на лексемы по разделителям, заданным вторым параметром. Синтаксис функции strtok():

    string strtok (string строка, string разделители)

    У функции strtok() есть одна странность: чтобы полностью разделить строку, функцию необходимо последовательно вызвать несколько раз. При очередном вызове функция выделяет из строки следующую лексему. При этом параметр строка задается всего один раз - функция отслеживает текущую позицию в строке до тех пор, пока строка не будет полностью разобрана на лексемы или не будет задан новый параметр строка. Следующий пример демонстрирует разбиение строки по нескольким разделителям:

    $info = "WJ Gi1more:[email protected] | Columbus, Ohio"; // Ограничители - двоеточие (:), вертикальная черта (|) и запятая (.) $tokens = ":|,"; $tokenized = strtok($info, $tokens); // Вывести элементы массива $tokenized while ($tokenized) : echo "Element = $tokenized
    "; // Обратите внимание: при последующих вызовах strtok // первый аргумент не передается $tokenized = strtok($tokens); endwhile; Результат: Element = WJGilmore Element = [email protected] Element = Columbus Element = Ohio

    parse_str()

    Функция parse_str() выделяет в строке пары и присваивает значения переменных в текущей области видимости. Синтаксис функции parse_str():

    void parse_str (string строка)

    Функция parse_str() особенно удобна при обработке URL, содержащих данные форм HTML или другую расширенную информацию. В следующем примере анализируется информация, переданная через URL. Строка представляет собой стандартный способ передачи данных между страницами либо откомпилированных в гиперссылке, либо введенных в форму HTML:

    $url = "fname=wj&lname=gilmore&zip=43210"; parse_str($url); // После выполнения parse_str() доступны следующие переменные: // $fname = "wj": // $lname = "gilmore"; // $zip = "43210"

    Поскольку эта функция создавалась для работы с URL, она игнорирует символ амперсанд (&).

    explode()

    Функция explode() делит строку на элементы и возвращает эти элементы в виде массива. Синтаксис функции explode():

    array explode (string разделитель, string строка [, int порог])

    Разбиение происходит по каждому экземпляру разделителя, причем количество полученных фрагментов может ограничиваться необязательным параметром порог.

    Разделение строки функцией explode() продемонстрировано в следующем примере:

    $info = "wilson | baseball | indians"; $user = explode("|", $info); // $user = "wilson"; // $user = "baseball"; // $user = "Indians";

    Функция explode() практически идентична функции регулярных выражений POSIX split(), описанной выше. Главное различие заключается в том, что передача регулярных выражений в параметрах допускается только при вызове split().

    implode()

    Если функция explode() разделяет строку на элементы массива, то ее двойник - функция implode() - объединяет массив в строку. Синтаксис функции implode():

    string implode (string разделитель, array фрагменты)

    Формирование строки из массива продемонстрировано в следующем примере:

    $ohio_cities = array ("Columbus", "Youngstown", "Cleveland", "Cincinnati"); $city_string = implode("l", $ohio_cities); // $city_string = "Columbus | Youngstown | Cleveland | Cincinnati";

    У implode() имеется псевдоним - функция join().

    strpos()

    Функция strpos() находит в строке первый экземпляр заданной подстроки. Синтаксис функции strpos():

    int strpos (string строка, string подстрока [, int смещение])

    Необязательный параметр offset задает позицию, с которой должен начинаться поиск. Если подстрока не найдена, strpos() возвращает FALSE (0).

    В следующем примере определяется позиция первого вхождения даты в файл журнала:

    $log = " 206.169.23.11:/www/:2000-08-10 206.169.23.11:/www/logs/:2000-02-04 206.169.23.11:/www/img/:1999-01-31"; // В какой позиции в журнале впервые встречается 1999 год? $pos = strpos($log, "1999"); // $pos = 95. поскольку первый экземпляр "1999" // находится в позиции 95 строки, содержащейся в переменной $log

    strrpos()

    Функция strrpos() находит в строке последний экземпляр заданного символа. Синтаксис функции strrpos():

    int strpos (string строка, char символ)

    По возможностям эта функция уступает своему двойнику - функции strpos(), поскольку она позволяет искать только отдельный символ, а не всю строку. Если во втором параметре strrpos() передается строка, при поиске будет использован только ее первый символ.

    str_replace()

    Функция str_replace() ищет в строке все вхождения заданной подстроки и заменяет их новой подстрокой. Синтаксис функции str_replace():

    string str_replace (string подстрока, string замена, string строка)

    Функция substr_replace(), описанная ниже в этом разделе, позволяет провести заме ну лишь в определенной части строки. Ниже показано, как функция str_replace() используется для проведения глобальной замены в строке.

    Если подстрока ни разу не встречается в строке, исходная строка не изменяется:

    $favorite_food = "My favorite foods are ice cream and chicken wings"; $favorite_food = str_replace("chicken_wings", "pizza", $favohte_food); // $favorite_food = "My favorite foods are ice cream and pizza"

    strstr()

    Функция strstr() возвращает часть строки, начинающуюся с первого вхождения заданной подстроки. Синтаксис функции strstr():

    string strstr (string строка, string подстрока)

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

    $url = "http://www.apress.com"; $domain - strstr($url, "."); // $domain = ".apress.com"

    substr()

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

    string substr (string строка, int начало [, int длина])

    Если необязательный параметр длина не указан, считается, что подстрока начинается с заданной начальной позиции и продолжается до конца строки. При использовании этой функции необходимо учитывать четыре обстоятельства:

    • если параметр начало положителен, возвращаемая подстрока начинается с позиции строки с заданным номером;
    • если параметр начало отрицателен, возвращаемая подстрока начинается с позиции (длина строки - начало);
    • если параметр длина положителен, в возвращаемую подстроку включаются все символы от позиции начало до позиции начало+длина. Если последняя величина превышает длину строки, возвращаются символы до конца строки;
    • если параметр длина отрицателен, возвращаемая подстрока заканчивается на заданном расстоянии от конца строки.

    Помните о том, что параметр начало определяет смещение от первого символа строки; таким образом, возвращаемая строка в действительности начинается с символа с номером (начало + 1).

    Следующий пример демонстрирует выделение части строки функцией substr():

    $car = "1944 Ford"; Smodel = substr($car, 6); // Smodel = "Ford"

    Пример с положительным параметром длина:

    $car = "1944 Ford"; $model = substr($car, 0, 4); // $model = "1944" Пример с отрицательным параметром длина: $car = "1944 Ford"; $model = substr($car, 2, -5); // $model = "44"

    substr_count()

    Функция substr_count() возвращает количество вхождений подстроки в заданную строку. Синтаксис функции substr_count(): int substr_count (string строка, string подстрока) В следующем примере функция substr_count() подсчитывает количество вхождений подстроки ain: $tng_twist = "The rain falls mainly on the plains of Spain"; $count = substr_count($tng_twist, "ain"); // $count = 4

    substr_replace()

    Функция substr_replace() заменяет часть строки, которая начинается с заданной позиции. Если задан необязательный параметр длина, заменяется фрагмент заданной длины; в противном случае производится замена по всей длине заменяющей строки. Синтаксис функции substr_replace():

    string substr_replace (string строка, string замена, int начало [, int длина])

    Параметры начало и длина задаются по определенным правилам:

    • если параметр начало положителен, замена начинается с заданной позиции;
    • если параметр начало отрицателен, замена начинается с позиции (длина строки -начало);
    • если параметр длина положителен, заменяется фрагмент заданной длины;
    • если параметр длина отрицателен, замена завершается в позиции (длина строки -длина).

    Простая замена текста функцией substr_replace() продемонстрирована в следующем примере:

    $favs = " "s favorite links"; $name = "Alessia"; // Параметры "0, 0" означают, что заменяемый фрагмент начинается // и завершается в первой позиции строки. $favs - substr_replace($favs, $name, 0, 0); print $favs:

    Результат:

    Alessia"s favorite links

    Преобразование строк и файлов к формату HTML и наоборот

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

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

    Быстрое преобразование простого текста к формату web-браузера - весьма распространенная задача. В ее решении вам помогут функции, описанные в этом разделе.

    nl2br()

    Функция nl2br() заменяет все символы новой строки (\n) эквивалентными конструкциями HTML.

    Синтаксис функции nl2br():

    string nl2br (string строка)

    Символы новой строки могут быть как видимыми (то есть явно включенными в строку), так и невидимыми (например, введенными в редакторе). В следующем примере текстовая строка преобразуется в формат HTML посредством замены символов \n разрывами строк:

    // Текстовая строка, отображаемая в редакторе. $text_recipe = " Party Sauce recipe: 1 can stewed tomatoes 3 tablespoons fresh lemon juice Stir together, server cold."; // Преобразовать символы новой строки в
    $htinl_recipe = nl2br($text_recipe) При последующем выводе $html_recipe браузеру будет передан следующий текст в формате HTML: Party Sauce recipe:
    1 can stewed tomatoes
    3 tablespoons fresh lemon juice
    Stir together, server cold.

    htmlentities()

    Функция htmlentities() преобразует символы в эквивалентные конструкции HTML. Синтаксис функции htmlentities:

    string htmlentities (string строка)

    В следующем примере производится необходимая замена символов строки для вывода в браузере:

    $user_input = "The cookbook, entitled Cafe Francaise" costs

    Функция htmlentities() в настоящее время работает только для символов кодировки ISO-8559-1 (ISO-Latin-1). Кроме того, она не преобразует пробелы в, как следовало бы ожидать.

    htmlspecialchars()

    Функция htmlspecialchars() заменяет некоторые символы, имеющие особый смысл в контексте HTML, эквивалентными конструкциями HTML. Синтаксис функции htmlspecialchars():

    string htmlspecialchars (string строка)

    Функция html special chars() в настоящее время преобразует следующие символы: & преобразуется в &; " " преобразуется в "; преобразуется в >.

    В частности, эта функция позволяет предотвратить ввод пользователями разметки HTML в интерактивных web-приложениях (например, в электронных форумах). Ошибки, допущенные в разметке HTML, могут привести к тому, что вся страница будет формироваться неправильно. Впрочем, у этой задачи существует и более эффективное решение - полностью удалить теги из строки функцией strip_tags().

    Следующий пример демонстрирует удаление потенциально опасных символов функцией htmlspeclalchars():

    $user_input = "I just can"t get of PHP & those fabulous cooking recipes!"; $conv_input = htmlspecialchars($user_input); // $conv_input = "I just can"t <> of PHP & those fabulous cooking recipes!"

    Если функция htmlspecialchars() используется в сочетании с nl2br(), то последнюю следует вызывать после htmlspecialchars(). В противном случае конструкции
    , сгенерированные при вызове nl2br(), преобразуются в видимые символы.

    get_html_translation_table()

    Функция get_html_translation_table() обеспечивает удобные средства преобразования текста в эквиваленты HTML Синтаксис функции get_htrril_translation_table():

    string get_html_translation_table (int таблица)

    Функция get_html_translation_table() возвращает одну из двух таблиц преобразования (определяется параметром таблица), используемых в работе стандартных функций htmlspecialchars() и htmlentities(). Возвращаемое значение может использоваться в сочетании с другой стандартной функцией, strtr(), для преобразования текста в код HTML.

    Параметр таблица принимает одно из двух значений:

    • HTML_ENTITIES;
    • HTML_SPECIALCHARS.

    В следующем примере функция get_html_translation_table() используется при преобразовании текста в код HTML:

    $string = "La pasta e il piatto piu amato in Italia"; $translate = get_html_translation_table(HTML_ENTITIES); print strtr($string, $translate); // Специальные символы преобразуются в конструкции HTML // и правильно отображаются в браузере.

    Кстати, функция array_flip() позволяет провести преобразование текста в HTML в обратном направлении и восстановить исходный текст. Предположим, что вместо вывода результата strtr() в предыдущем примере мы присвоили его переменной $translated string.

    В следующем примере исходный текст восстанавливается функцией array_flip():

    $translate = array_flip($translate); $translated_string - "La pasta é il piatto piú amato in Italia"; $original_string = strtr($translated_string, $translate); // $original_string = "La pasta e il piatto piu amato in Italia";

    strtr()

    Функция strtr() транслирует строку, то есть заменяет в ней все символы, входящие в строку источник, соответствующими символами строки приемник. Синтаксис функции strtr():

    string strtr (string строка, string источник, string приемник)

    Если строки источник и приемник имеют разную длину, длинная строка усекается до размеров короткой строки.

    Существует альтернативный синтаксис вызова strtr() с двумя параметрами; в этом случае второй параметр содержит ассоциативный массив, ключи которого соответствуют заменяемым подстрокам, а значения - заменяющим подстрокам. В следующем примере теги HTML заменяются XML-подобными конструкциями:

    " => "

    ", "" => "

    "); $string = "

    Today In PHP-Powered News

    "; print strtr($string, $source); // Выводится строка "Today in PHP-Powered News" ?>

    Преобразование HTML в простой текст

    Иногда возникает необходимость преобразовать файл в формате HTML в простой текст. Функции, описанные ниже, помогут вам в решении этой задачи.

    strip_tags()

    Функция strip_tags() удаляет из строки все теги HTML и РНР, оставляя в ней только текст. Синтаксис функции strip_tags():

    string strip_tags (string строка [, string разрешенные_тerи])

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

    Ниже приведен пример удаления из строки всех тегов HTML функцией strip_tags():

    $user_input = "I just love РНР and gourment recipes!"; $stripped_input = strip_tags($user_input); // $stripped_input = "I just love PHP and gourmet recipes!";

    В следующем примере удаляются не все, а лишь некоторые теги:

    $input = "I love to eat!!"; $strip_input = strip_tags ($user_input, ""); // $strip_input = "I love to eat!!";

    Удаление тегов из текста также производится функцией fgetss().

    get_meta_tags()

    Хотя функция get_meta_tags() и не имеет прямого отношения к преобразованию текста, зто весьма полезная функция, о которой следует упомянуть. Синтаксис функции get_meta_tags():

    array get_meta_tags (string имя_файла/URL [, int включение_пути])

    Функция get_meta_tags() предназначена для поиска в файле HTML тегов МЕТА.

    Теги МЕТА содержат информацию о странице, используемую главным образом поисковыми системами. Эти теги находятся внутри пары тегов... . Применение тегов МЕТА продемонстрировано в следующем фрагменте (назовем его example.html, поскольку он будет использоваться в листинге 8.2): PHP Recipes Функция get_meta_tags() ищет в заголовке документа теги, начинающиеся словом МЕТА, и сохраняет имена тегов и их содержимое в ассоциативном массиве. В листинге 8.2 продемонстрировано применение этой функции к файлу example.html. Листинг 8.2. Извлечение тегов МЕТА из файла HTML функцией get_meta_tags()

    $meta_tags = get_meta_tags("example.html"): // Переменная $meta_tags содержит массив со следующей информацией: // $meta_tags["keywords"] = "PHP, code, recipes, web" // $meta_tags["description"] = "Информация о PHP" // $meta_tags["author"] = "KDG";

    Интересная подробность: данные тегов МЕТА можно извлекать не только из файлов, находящихся на сервере, но и из других URL.

    Преобразование строки к верхнему и нижнему регистру

    В РНР существует четыре функции, предназначенных для изменения регистра строки:

    strtolower()

    Функция strtolower() преобразует все алфавитные символы строки к нижнему регистру. Синтаксис функции strtolower():

    string strtolower(string строка)

    Неалфавитные символы функцией не изменяются. Преобразование строки к нижнему регистру функцией strtolower() продемонстрировано в следующем примере:

    $sentence = "COOKING and PROGRAMMING PHP are my TWO favorite!"; $sentence = strtolower($sentence); // После вызова функции $sentence содержит строку // "cooking and programming php are my two favorite!"

    strtoupper()

    Строки можно преобразовывать не только к нижнему, но и к верхнему регистру. Преобразование выполняется функцией strtoupper(), имеющей следующий синтаксис:

    string strtoupper (string строка)

    Неалфавитные символы функцией не изменяются. Преобразование строки к верхнему регистру функцией strtoupper() продемонстрировано в следующем примере:

    $sentence = "cooking and programming PHP are my two favorite!"; $sentence = strtoupper($sentence); // После вызова функции $sentence содержит строку // "COOKING AND PROGRAMMING PHP ARE MY TWO FAVORITE!"

    ucfirst()

    Функция ucfirst() преобразует к верхнему регистру первый символ строки - при условии, что он является алфавитным символом. Синтаксис функции ucfirst():

    string ucfirst (string строка)

    Неалфавитные символы функцией не изменяются. Преобразование первого символа строки функцией ucfirst() продемонстрировано в следующем примере:

    &sentence = "cooking and programming PHP are my two favorite!"; $sentence = ucfirst($sentence); // После вызова функции $sentence содержит строку // "Cooking and programming PHP are mу two favorite!"

    ucwords()

    Функция ucwords() преобразует к верхнему регистру первую букву каждого слова в строке. Синтаксис функции ucwords():

    string ucwords (string строка")

    Неалфавитные символы функцией не изменяются. "Слово" определяется как последовательность символов, отделенная от других элементов строки пробелами. В следующем примере продемонстрировано преобразование первых символов слов функцией ucwords():

    $sentence = "cooking and programming PHP are my two favorite!"; $sentence = ucwords($sentence); // После вызова функции $sentence содержит строку // "Cooking And Programming PHP Are My Two Favorite!"

    strrchr()

    strrchr("строка", "о") - Находит последнее вхождение подстроки

    Если подстрока не найдена, возвращает FALSE.

    В отличие от strchr(), если искомая строка состоит более чем из одного символа, используется только первый символ.

    Если второй параметр не является строкой, он приводится к целому и трактуется как код символа.

    // получить последнюю директорию из $PATH $dir = substr(strrchr($PATH, ":"), 1); // получить все после последнего перевода строки $text = "Line 1\nLine 2\nLine 3"; $last = substr(strrchr($text, 10), 1);

    highlight_string()

    highlight_string- выделение синтаксиса строки.

    mixed highlight_string (string str [, bool return])

    Функция highlight_string() выводит версию с расцвеченным синтаксисом строки str, используя цвета, определённые во встроенном выделении синтаксиса PHP.

    Если второй параметр return имеет значение TRUE, то highlight_string() возвратит версию раскрашенного кода как строку, вместо её печати. Если второй параметр не имеет значение TRUE, highlight_string() возвратит TRUE при успехе, FALSE при неудаче.

    Примечание: 1.параметр return стал доступен, начиная с PHP 4.2.0. До этого он работал, как по умолчанию, т.е. FALSE.
    2.Функция Highlight_String() различает PHP код по тегам . show_source() - синоним highlight_file() . Для изменения цвета выделения по умолчанию используйте следующие PHP директивы:

    Highlight.bg #FFFFFF highlight.comment #FF8000 highlight.default #0000BB highlight.html #000000 highlight.keyword #007700 highlight.string #DD0000 в.htaccess: php_flag highlight.bg #FFFFFF в PHP: if(@ini_get("highlight.bg")=="") ...

    addslashes()

    - Экранирует спецсимволы в строке

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

    Экранируются одиночная кавычка ("), дойная кавычка ("), обратный слэш (\) и NUL (байт NULL).

    $str = "Is your name O"reilly?"; // выводит: Is your name O\"reilly? echo addslashes($str);

    stripslashes

    - Удаляет экранирование символов, произведенное функцией addslashes() Удаляет экранирующие бэкслэши. (\" преобразуется в ", и т.д.). Двойные бэкслэши (\\) преобразуется в одиночные(\).

    wordwrap()

    Выполняет перенос строки на данное количество символов с использованием символа разрыва строки // Использование wordwrap(). function cite($ourText, $maxlen=60, $prefix="> ") { $st = wordwrap($ourText, $maxlen-strlen($prefix), "\n"); $st = $prefix.str_replace("\n", "\n$prefix", $st); return $st; } echo cite("The first Matrix I designed was quite naturally perfect, it was a work of art - flawless, sublime. A triumph equalled only by its monumental failure. The inevitability of its doom is apparent to me now as a consequence of the imperfection inherent in every human being. Thus, I redesigned it based on your history to more accurately reflect the varying grotesqueries of your nature. However, I was again frustrated by failure.", 20);

    > The first Matrix I > designed was quite > naturally > perfect, it was a > work of art - > flawless, sublime. > A triumph > equalled only by > its monumental > failure. The > inevitability > of its doom is > apparent to me now > as a consequence > of the > imperfection > inherent in every > human being. Thus, > I > redesigned it > based on your > history to more > accurately reflect > the varying > grotesqueries of > your nature. > However, I was > again > frustrated by > failure.


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

    Безусловно, изображения, звуковые файлы, видеоинформация, анимационные данные и аплеты составляют важную часть информационного наполнения World Wide Web, но подавляющая часть данных в веб все еще представлена в виде текста - последовательностей символов, подобных данному предложению. Основным типом данных PHP, предназначенным для представления текста, является строка.

    Описание строк в PHP

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

    Код PHP $my_string = "Простая строка"; $another_string = "Еще одна строка";

    Различие между одинарными и двойными кавычками обусловлено тем, насколько интенсивной интерпретации подвергаются в среде PHP символы, заключенные в кавычки, перед созданием самой строки. Если строка заключена в одинарные кавычки, то не выполняется почти никакая интерпретация, а если строка заключена в двойные кавычки, то в среде PHP осуществляется подстановка значений всех переменных, которые указаны в строке, а также выполняется замена некоторых специальных символьных последовательностей, которые начинаются с символа обратной косой черты (\).

    Например, после обработки следующего кода, входящего в состав веб-страницы:

    Код PHP $count = 13; $string_1 = "В строке \"Hello, world!\" $count символов.
    "; $string_2 = "В строке \"Hello, world!\" $count символов.
    "; echo $string_1; echo $string_2;

    можно рассчитывать на получение в окне браузера такого вывода:

    Обработка интерпретатором PHP строк с одинарными и двойными кавычками

    Подстановка значений с использованием фигурных скобок

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

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

    Например, интерпретатор PHP не испытывает затруднений при обработке следующего кода:

    Код PHP $sport = "волейбол"; $play = "Я люблю играть в $sport.";

    В таких случаях интерпретатор обнаруживает символ $, после чего начинает собирать символы в подстроку для выявления имени переменной и выполняет такую сборку до тех пор, пока не встретится пробел или точку, которые следуют за именем переменной $sport. Пробелы и точки не могут входить в состав имени переменной, поэтому становится ясно, что рассматриваемая переменная имеет имя $sport; после этого интерпретатор PHP успешно находит значение для данной переменной ("волейбол") и подставляет его.

    Но иногда не существует возможности обозначить конец имени переменной с помощью пробела или точки. Рассмотрим следующий пример:

    Код PHP $sport_1 = "волей"; $sport_2 = "фут"; $sport_3 = "баскет"; // Неправильные конструкции $play_1 = "Я люблю играть в $sport_1бол."; $play_2 = "Я люблю играть в $sport_2бол."; $play_3 = "Я люблю играть в $sport_3бол.";

    В данном случае не будет достигнут желаемый эффект, поскольку интерпретатор PHP будет рассматривать строку $sport_1 как часть имени переменной $sport_1бол, которой, по всей видимости, не присвоено какое-либо значение. Вместо этого необходимо применять такую запись:

    Код PHP // Правильная конструкция $play_1 = "Я люблю играть в {$sport_1}бол."; $play_2 = "Я люблю играть в {$sport_2}бол."; $play_3 = "Я люблю играть в {$sport_3}бол.";

    Эта запись служит для интерпретатора PHP указанием на то, что перед подстановкой значений необходимо вычислить только значение выражения с именем переменной, заключенным в фигурные скобки.

    По аналогичным причинам интерпретатор PHP, если не используются фигурные скобки, сталкивается с затруднениями при подстановке значений сложных выражений с именами переменных, наподобие обращений к элементам многомерных массивов и к объектным переменным. Общее правило состоит в том, что если за открывающей фигурной скобкой ({) непосредственно следует символ $, то интерпретатор PHP вычисляет значение выражения с именем переменной вплоть до закрывающей фигурной скобки (}), а затем подставляет результирующее значение в строку. (Если требуется, чтобы в строке появилось литеральное значение {$, это можно обеспечить, поставив перед каждым из этих символов обратную косую черту, \).

    Символы и индексы символов в строках

    В отличие от некоторых других языков программирования в языке PHP нет отдельного символьного типа, не совпадающего со строковым типом. Вообще говоря, функции, которые требуют в других языках применения символьных фактических параметров, в языке PHP рассчитаны на получение строк с длиной 1.

    Выборка отдельных символов из строки может осуществляться путем указания порядкового номера символа, начинающегося с нуля, который должен быть указан в фигурных скобках непосредственно за именем строковой переменной. Такие символы фактически представляют собой односимвольные строки. Например, выполнение следующего кода:

    Код PHP $my_string = "Doubled"; for ($index = 0; $index < strlen($my_string); $index++) { $char = $my_string{$index}; print("$char$char"); }

    приводит к получению в окне браузера такого вывода:


    Обработка символов в строке

    Очевидно, что при каждом проходе по циклу каждый символ строки выводится дважды. Функция strlen() возвращает длину строки.

    Операции со строками

    В языке PHP предусмотрены две строковые операции: операция со знаком операции точка (.), или операция конкатенации, и операция со знаком операции точка и знак равенства (.=), или операция конкатенации и присваивания. Рассмотрим следующий пример:

    Код PHP $string_1 = "Это часть"; $string_2 = "строки"; // Конкатенация строк echo $string_1." простой ".$string_2."
    "; // "Это часть простой строки" // Конкатенация и присваивание $string_1 .= " простой "; // Эквивалентно $string_1 = $string_1." простой "; $string_1 .= $string_2; echo $string_1; // "Это часть простой строки"

    Следует отметить, что в приведенном выше примере первому оператору echo не передается несколько строковых фактических параметров; передается только один строковый фактический параметр, созданный в результате конкатенации четырех строк. Первая и третья строки заданы с помощью переменных, а вторая и четвертая строки представляют собой литеральную строку, заключенную в двойные кавычки.

    Синтаксическая структура вложенного документа (Heredoc)

    Кроме синтаксических структур строк в одинарных и двойных кавычках, в языке PHP предусмотрен еще один способ задания строки, называемый синтаксической структурой вложенного документа (Heredoc) . Как оказалось, подобная синтаксическая структура является весьма удобным средством задания больших фрагментов текста, подставляемого с помощью переменных, поскольку избавляет пользователя от необходимости обозначать внутренние кавычки с помощью специальных символов. Такой способ особенно удобен при создании страниц, которые содержат формы HTML.

    Знаком операции, применяемом в синтаксической структуре вложенного документа, является (<<<). За этим знаком должна непосредственно следовать метка (не заключенная в кавычки), которая обозначает начало многострочного текста. Интерпретатор PHP продолжает включать в состав значения переменной следующие строки до тех пор, пока снова не появится эта же метка в начале строки. За заключительной меткой может следовать необязательная точка с запятой, а какие-либо другие символы после метки не допускаются.

    Рассмотрим следующий пример:

    Код PHP $string = <<

    EOT; echo $string;

    Обратите внимание на то, что показанное выше заключительное слово EOT вообще не должно обозначаться отступом , в противном случае оно будет рассматриваться как принадлежащее к дополнительно включаемому тексту. В качестве метки не обязательно использовать слово "EOT", метка может иметь любое имя, соответствующее обычным правилам именования переменных в языке PHP.

    Подстановка значений переменных осуществляется с использованием точно такого же способа, как и при использовании строк, заключенных в двойные кавычки. Удобной особенностью вложенного документа является то, что в обозначаемый таким образом текст можно вводить знаки кавычек без применения каких-либо управляющих символов, и это не приводит к преждевременному завершению формирования строки. Пример, показанный выше, выводит простейшую HTML-форму:

    Использование heredoc-синтаксиса для вывода формы

    Строковые функции

    В языке PHP предусмотрено большое количество разнообразных функций для обработки и преобразования строк. Если у вас когда-либо возникнет необходимость создать собственную функцию, которая читает и обрабатывает строки символ за символом, чтобы сформировать новую строку, вначале подумайте, не могла ли аналогичная задача возникнуть перед кем-либо раньше. А если интуиция подсказывает, что такая вероятность существует, то, возможно, имеется и встроенная функция, которая решает поставленную задачу. Для получения дополнительной информации о строковых функциях обратитесь по адресу php.net/manual/ru/ref.strings.php .

    В данном разделе представлены основные функции для проверки, сравнения, модификации и вывода строк. Для того чтобы действительно овладеть средствами манипулирования строками языка PHP, по-видимому, следует иметь хотя бы беглое знакомство со всем, что описано в этом разделе. А описание функций, предназначенных для работы с регулярными выражениями, можно найти в следующей статье.

    Проверка строк

    На какие вопросы, касающиеся строк, чаще всего приходится искать ответ? Первым в списке вопросов является вопрос о том, какую длину имеет строка; для ответа на него используется функция strlen() , имя которой является сокращением от string length - длина строки. Пример применения такой функции приведен ниже:

    Код PHP $en_str = "Hello world!"; $rus_str = "Простая строка"; echo $en_str." - ".strlen($en_str)." символов
    "; echo $rus_str." - ".strlen($rus_str)." символов";

    Выполнение этого кода приводит к получению следующего неоднозначного вывода:


    Функция strlen()

    Как видите, для строки "Hello world!" результат получился правильным, но для строки "Простая строка" результат в 27 символов является неверным. В чем же тут дело? Дело в том, что функция strlen() считает именно байты, а не символы. В первом случае все символы в строке являются англоязычными, т.е. представлены кодировкой ASCII и кодируются 1 байтом. Во втором случае в строке есть русские символы, которые кодируются 2 байтами (UTF-8). Чтобы избежать проблем в дальнейшем при работе со строковыми функциями, в PHP следует использовать функции для многобайтных кодировок, начинающихся с префикса mb_. Это значит, что в предыдущем примере надо заменить функцию strlen() на mb_strlen() и явно указать кодировку:

    Код PHP ... echo $rus_str." - ".mb_strlen($rus_str, "UTF8")." символов";

    Поиск символов и подстрок

    Следующий вопрос, касающийся строк, заключается в том, что они содержат. Например, функция strpos() [mb_strpos() ] позволяет найти номер позиции конкретного символа в строке, если таковой имеется:

    Код PHP $en_str = "Hello world!"; echo "Символ "l": ".strpos($en_str, "l"); // 2

    Ситуации, связанные с применением функции strpos(), относятся к тем случаям, в которых невосприимчивость языка PHP к типам может стать источником проблем. Если соответствие не найдено, то функция возвращает ложное значение, а если искомый символ совпадает с самым первым символом в строке, то функция возвращает 0 (поскольку отсчет позиций символов в строке начинается с 0, а не с 1). Оба эти значения соответствуют ложному значению при использовании для проверки логического условия. Один из способов, позволяющих различить эти значения, состоит в применении операции сравнения на идентичность (операции ===, введенной начиная с версии PHP4), которая возвращает истинное значение, только если ее операнды являются одинаковыми и относятся к одному и тому же типу. Операцию сравнения на идентичность можно использовать для проверки того, равно ли возвращаемое значение 0 (или имеет значение false), без риска спутать возвращаемое значение с другими значениями, которые могут стать одинаковыми с ним после приведения типа.

    Функция strpos() может также использоваться для поиска подстроки, а не одного символа. Для этого достаточно задать в качестве искомой многосимвольную, а не односимвольную строку. Кроме того, в вызове этой функции можно задать дополнительный целочисленный параметр, который указывает позицию начала поиска.

    Возможен также поиск в обратном направлении, от конца строки к началу. Для этого используется функция strrpos() [mb_strrpos ]. (Обратите внимание на то, что в имени этой функции есть дополнительная буква r, которая является сокращением от слова reverse - обратный.) Эта функция принимает в качестве параметров строку, в которой должен выполняться поиск, и искомую односимвольную строку, после чего возвращает последнюю позицию вхождения второго параметра в первый параметр. (В отличие от функции strpos() в функции strrpos() искомая строка должна состоять только из одного символа.) После применения этой функции с теми же параметрами, что и в предыдущем примере, будет найдена другая позиция:

    Код PHP $en_str = "Hello world!"; echo "Символ "l": ".strrpos($en_str, "l"); // 9 т.к. поиск ведется с конца строки

    Сравнение

    Совпадает ли та строка с этой строкой? По-видимому, в коде часто приходится искать ответ также и на этот вопрос, особенно когда приходится обрабатывать входные данные, введенные конечным пользователем.

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

    Результатам сравнения двух строк с использованием операции == (или соответствующих операций < и >) можно доверять, только если оба операнда являются строками и известно, что не производилось какое-либо преобразование типов. А результатам проверки с помощью функции strcmp(), которая описана ниже, можно доверять всегда.

    Наиболее важной функцией сравнения строк, с помощью которой выполняется основной объем работы, является strcmp() . Эта функция принимает две строки в качестве параметров и сравнивает байт за байтом, пока не обнаружит различие. После этого функция возвращает отрицательное число, если первая строка меньше второй, и положительное число, если вторая строка меньше первой. Если строки идентичны, функция strcmp() возвращает ноль.

    Функция strcasecmp() действует по такому же принципу, за исключением того, что при сравнении на равенство не учитывается регистр букв. Например, вызов функции strcasecmp("hey!", "HEY!") должен возвратить нуль.

    Поиск

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

    Функция strstr() [mb_strstr() ] принимает в качестве параметров строку, в которой должен быть выполнен поиск, и искомую строку (в указанном порядке). В случае успеха данная функция возвращает часть строки, которая начинается с первого вхождения искомой строки (и включает искомую строку). Если такая строка не найдена, функция возвращает ложное значение. В следующем фрагменте кода приведены примеры применения этой функции:

    Код PHP $str = "Привет мир!"; $find_str = "мир"; echo "Подстрока "$find_str" в исходной строке: ".strstr($str, $find_str);

    Так же как и функция strcmp(), функция strstr() имеет версию, нечувствительную к регистру, которая имеет имя stristr() [mb_stristr ] (буква i в этом имени является сокращением от слова insensitive - нечувствительный). Функция stristr() идентична функции strstr() во всех отношениях, за исключением того, что при сравнении строчные буквы рассматриваются как прописные аналоги.

    Выборка подстроки

    Многие строковые функции PHP выполняют над строками операции вырезки и вставки. Под вырезкой подразумевается выборка части строки, а под вставкой - избирательная модификация строки. Следует учитывать, что даже функции вставки (чаще всего) не модифицируют строку, заданную в качестве входного параметра. Обычно такие функции возвращают модифицированную копию и оставляют исходный параметр неизменным.

    Наиболее простой способ выборки части строки состоит в применении функции substr() [mb_substr() ], которая возвращает новую строку, содержащую часть подпоследовательности символов из старой строки. В качестве параметров функция substr() принимает строку (из которой осуществляется выборка подстроки), целое число (позиция, с которой начинается требуемая подстрока) и необязательный целочисленный третий параметр, который задает длину требуемой подстроки. Если третий параметр не задан, то подразумевается, что подстрока продолжается до конца строки. (Следует помнить, что и при использовании этой функции нумерация позиций в строке начинается с нуля, а не с единицы, как и во всех параметрах функций PHP, которые обозначают числовые позиции в строках.) Например:

    Код PHP $str = "Привет мир!"; echo mb_substr($str, 7, 3, "UTF8"); // "мир"

    И параметр с обозначением начальной позиции, и параметр с обозначением длины могут быть отрицательными, но в обоих этих случаях отрицательное значение имеет разный смысл. Если отрицательной является начальная позиция, то позиция начального символа подстроки определяется путем обратного отсчета от конца строки, а не прямого отсчета от начала строки. (Начальная позиция, равная -1, указывает, что отсчет начинается с последнего символа, значение -2 указывает на предпоследний символ и т.д.)

    На основании этого можно было бы предположить, что отрицательное значение длины также подразумевает, что подстрока должна определяться путем обратного отсчета от начального символа, а не прямого отсчета, но дело обстоит иначе. Утверждение, согласно которому символ в начальной позиции является первым символом в возвращаемой строке (а не последним), всегда остается справедливым. Вместо этого параметр с отрицательным значением длины означает, что конечный символ определяется путем обратного отсчета от конца, а не прямого отсчета от начальной позиции.

    Ниже приведены некоторые примеры с положительными и отрицательными параметрами:

    Код PHP $str = "Привет мир!"; echo mb_substr($str, 7, 3, "UTF8")."
    "; // "мир" echo mb_substr($str, -4, 3, "UTF8")."
    "; // "мир" echo mb_substr($str, 0, -5, "UTF8")."
    "; // "Привет"

    Удаление пробелов и символов табуляции из строк

    С формальной точки зрения функции chop(), ltrim() и trim() представляют собой функции для работы с подстроками (которые во многом напоминают другие функции), но фактически указанные функции предназначены для удаления ненужных символов из строк. Функции chop() , ltrim() и trim() , соответственно, удаляют пробельные символы, находящиеся в конце, в начале, в начале и в конце, из строки, указанной в качестве единственного строкового параметра.

    Кроме пробелов, эти функции удаляют другие пробельные символы, подобные тем, которые обозначаются с помощью управляющих последовательностей, \n, \r, \t и \0 (символов обозначения конца строки, знаков табуляции и нуль-символов, используемых для обозначения конца строки в программах на языке C).

    В языке PHP обычно принято применять функцию удаления пробельных символов в конце строки с именем chop(), но может быть также вызвана идентичная функция, имеющая более выразительное имя rtrim() . Наконец, следует отметить, что функция chop(), несмотря на то, что ее имя, которое означает "отрубить", звучит очень грозно, не повреждает исходный параметр $original, который сохраняет предыдущее значение.

    Замена строк

    Все рассмотренные выше функции для работы со строками обеспечивали выборку части входного параметра, а не формирование полностью новой строки. В данном разделе рассматриваются функции str_replace() и substr_replace(), предназначенные для этой цели.

    Функция str_replace() позволяет заменить все вхождения заданной конкретной подстроки другой строкой. Эта функция принимает три параметра: строка, в которой должен быть выполнен поиск, подстрока, подлежащая замене после ее обнаружения, и строка, которая должна применяться для замены. Рассмотрим следующий пример:

    Код PHP $str = "Привет мир!"; echo str_replace("мир", "планета", $str); // "Привет планета!"

    Замена выполняется применительно ко всем вхождениям подстроки, найденным в строке поиска. Если бы приведенный выше пример применялся для замены названия города в устаревшей энциклопедии, то после преобразования всего текста энциклопедии в единственную строку PHP такую замену во всем тексте можно было бы выполнить за один проход.

    Как было показано выше, функция str_replace() выбирает часть исходной строки, подлежащую замене, отыскивая вхождения искомой подстроки в исходной строке; в отличие от этого функция substr_replace() выбирает часть, подлежащую замене, по ее абсолютной позиции. Эта функция принимает до четырех параметров: строка, в которой должна быть выполнена замена, строка, применяемая в качестве замены, начальная позиция замены и (в качестве необязательного параметра) длина заменяемой части строки. Рассмотрим следующий пример:

    Код PHP echo substr_replace("ABCDEFG", "-", 2, 3); // "AB-FG"

    Часть CDE строки заменена одним знаком. Обратите внимание на то, что в данном случае было разрешено заменить подстроку строкой другой длины. Если параметр с обозначением длины опущен, то предполагается, что должна быть заменена вся часть строки после начальной позиции.

    Функция substr_replace() принимает также отрицательные параметры в качестве обозначения начальной позиции и длины, которые трактуются точно так же, как в функции substr(), которая описана выше. Важно помнить, что в результате операций, выполняемых с помощью функций str_replace и substr_replace, исходная строка остается неизменной .

    Наконец, имеется ряд менее широко применяемых функций, которые формируют новые строки из старых. Функция strrev() просто возвращает новую строку, в которой символы входной строки расставлены в обратном порядке. Функция str_repeat() принимает один строковый и один целочисленный параметр и возвращает строку, в которой собрано указанное количество копий строкового параметра:

    Код PHP echo str_repeat("ABC", 3); // ABCABCABC

    Функции преобразования регистра букв

    Эти функции позволяют преобразовывать строчные буквы в прописные и наоборот. Функция strtolower() [mb_strtolower() ] возвращает строку, в которой все буквы преобразованы в строчные. При этом не имеет значения, содержала ли исходная строка исключительно прописные буквы или прописные и строчные. Например:

    Код PHP $str = "Привет мир!"; echo mb_strtolower($str, "UTF8"); // "привет мир!"

    Если вы уже сталкивались с необходимостью выполнять большой объем проверки форм, то могли заметить, что функция strtolower() является исключительно удобным средством обработки адресов электронной почты, полученных от тех пользователей, которые все еще не знают, что регистр букв в этих адресах не учитывается. Не менее полезными являются и другие функции, относящиеся к рассматриваемой категории.

    Функция strtoupper() [mb_strtoupper() ] возвращает строку, в которой все буквы преобразованы в прописные. В качестве примера можно привести следующий фрагмент кода:

    Код PHP $str = "Привет мир!"; echo mb_strtoupper($str, "UTF8"); // "ПРИВЕТ МИР!"

    Функция ucfirst() преобразует в прописную только первую букву строки, функция ucwords() преобразует в прописную первую букву каждого слова в строке. Ни функция ucwords(), ни ucfirst() не имеют аналогичной функции для многобайтной кодировки, поэтому несовместимы со строками, содержащими кириллицу.

    Функции введения управляющих символов

    Одним из преимуществ языка PHP является то, что он может применяться дня обмена данными почти с любой системой. Средства подобного рода принято рассматривать как своего рода "программный клей". В этой роли язык PHP применяется для взаимодействия с серверами баз данных, серверами LDAP, для обмена данными через сокеты и само соединение HTTP. Зачастую такое взаимодействие осуществляется путем предварительного создания строки сообщения (наподобие запроса к базе данных), а затем передачи этого сообщения в программу-получатель. Но в программах часто придается особый смысл некоторым символам, и поэтому их приходится преобразовывать в управляющие символы. Это означает, что программе-получателю дается указание рассматривать подобные символы как литеральную часть строки, а не применять к ним специальную обработку.

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

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

    Код PHP - абстрактный пример $escapedstring = addslashes("Строка с "кавычками"."); $query = "INSERT INTO test (quote) values ("$escapedstring")"; $result = mysqli_query($link, $query) or die(mysql_error());

    Выполнение этого кода позволяет предотвратить ошибочную интерпретацию оператора SQL, при которой строка рассматривалась бы как заканчивающаяся прямо перед буквой "к". А после выборки этих данных необходимо воспользоваться функцией stripslashes() для удаления символов обратной косой черты.

    Функция quotemeta() преобразует в управляющие последовательности более широкий набор символов. Все эти символы обычно имеют особый смысл в командной строке Unix: " . ", " " ", " + ", " * ", " ? ", " [ ", " ] ", " ^ ", " (", " $ " и ")". Например, выполнение следующего кода:

    Код PHP $str = "Эти символы ($, *, ^) нужно преобразовать."; echo quotemeta($str);

    выводит такую строку:


    Использование функции quotemeta()

    Функции вывода на внешнее устройство и в строку

    Основными конструкциями, применяемыми для вывода, являются print и echo, которые подробно рассматривались ранее. Стандартный способ вывода значений переменных на внешнее устройство состоит в том, чтобы включить имена этих переменных в строку с двойными кавычками (при обработке которой интерпретатором происходит подстановка значений переменных), а затем передать эту строку в конструкцию print или echo.

    Если требуется еще более точно отформатированный вывод, то можно воспользоваться предоставляемыми языком PHP функциями printf() и sprintf() . Эти две функции принимают одинаковые параметры: специальную строку формата, за которой следует произвольное количество других параметров, подставляемых в нужные места в строке формата для получения результата. Единственное различие между функциями printf() и sprintf() состоит в том, что printf() отправляет результирующую строку непосредственно на внешнее устройство, применяемое для вывода, a sprintf() возвращает результирующую строку в качестве результата своего выполнения.

    Несколько слов для опытных программистов, работающих на языке C. Эта версия функции sprintf() немного отличается от версии из языка C в том, что функции sprintf() не требуется предоставлять распределенную строку, в которую должна осуществляться запись, поскольку интерпретатор PHP распределяет память для результирующей строки от имени пользователя.

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

    После знака % находятся пять элементов, входящих в состав спецификации преобразования, которые описаны ниже, причем некоторые из них являются необязательными: заполнение, выравнивание, минимальная ширина, точность и тип:

      Для указания на то, является ли число отрицательным, применяется необязательное обозначение в виде знака "минус" (-).

      Единственный (необязательный) символ заполнения представляет собой либо 0, либо пробел (). Этот символ используется для заполнения любого пространства, которое при его отсутствии осталось бы незаполненным, но на выделении которого настаивал пользователь (задавая слишком большое значение параметра минимальной ширины). Если этот символ заполнения не задан, то по умолчанию происходит заполнение пробелами.

      Необязательный символ выравнивания (-) показывает, должно ли выводимое значение быть выровнено по левому или по правому краю. Если этот символ задан, то значение будет выровнено по левому краю, а при его отсутствии применяется выравнивание по правому краю.

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

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

      Единственный символ, указывающий, как должен интерпретироваться тип значения. Символ f указывает, что значение должно быть выведено как число с плавающей точкой двойной точности, символ s указывает, что вывод значения должен осуществляться в виде строкового, а остальные возможные символы (b, c, d, o, x, X) говорят о том, что значение должно интерпретироваться как целочисленное и выводиться в различных форматах. Этими форматами являются b, который обозначает вывод в формате двоичных чисел, c - обусловливающий вывод символа с соответствующим значением кода ASCII, o - который требует вывода в формате восьмеричных чисел, x - для вывода в формате шестнадцатеричных чисел (с буквенными обозначениями цифр в нижнем регистре), и X - для вывода шестнадцатеричных чисел, в которых в качестве буквенных обозначений цифр используются прописные буквы.

    Ниже приведен пример вывода одного и того же числа с плавающей точкой двойной точности несколькими разными способами:

    Код PHP
     %10f
    %-10f
    %2.2f", $value, $value, $value, $value); ?>

    Он приводит к получению таких результатов:


    Использование форматированных строк с помощью функции printf()

    Применяемая в этом примере конструкция

    ...
    представляет собой дескриптор HTML, который указывает браузеру, что заключенный в этот дескриптор блок должен форматироваться в буквальном виде, без сжатия нескольких пробелов в один и т.д.

    Функции для работы с кодом HTML

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

    Строковые функции, предназначенные для работы с кодом HTML
    Функция Описание
    htmlspecialchars()

    Принимает в качестве параметра строку и возвращает строку, в которой четыре символа, имеющие специальное значение в языке HTML, заменены специальными строками. Каждый из этих символов заменяется соответствующим компонентом HTML, который после развертывания текста страницы в браузере снова заменяется первоначальным символом. Символ & заменяется компонентом & символ " (символ двойной кавычки) - компонентом " символ < - < а символ > - >

    htmlentities()

    Осуществляет более полную обработку по сравнению с htmlspecialchars(), т.е. заменяет компонентом HTML не только специальные символы, но и все символы, для которых предусмотрена замена компонентом HTML

    get_html_translation_table()

    Принимает одну из двух специальных констант (HTML_SPECIAL_CHARS или HTML_ENTITIES) и возвращает таблицу преобразования, используемую соответственно функциями htmlspecialchars() или htmlentities(). Таблица преобразования представляет собой массив, ключами которого являются символьные строки, а соответствующими значениями - строки, предназначенные для их замены

    nl2br()

    Принимает в качестве параметра строку и возвращает ту же строку, но с дескрипторами
    , вставленным перед всеми символами обозначения конца строки (\n, \r или \r\n). Необходимость в использовании этой функции возникает, например, если требуется обеспечить такое же разбиение на абзацы текста, отображаемого в браузере, как и в исходное тексте

    strip_tags()

    Принимает в качестве параметра строку и выполняет все от нее зависящее для формирования строки, очищенной от всех дескрипторов HTML и всех дескрипторов PHP

    Хэширование данных с помощью алгоритма MD5

    Алгоритм MD5 представляет собой алгоритм обработки строк, который используется для выработки так называемого дайджеста, или цифровой подписи для любой строки, переданной в качестве параметра. Алгоритм формирует на основе входной строки строку постоянной длины, состоящую из 32 шестнадцатеричных цифр (0-9, a-f). Результаты, формируемые с помощью алгоритма MD5, обладают очень полезными свойствами, описанными ниже:

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

      Результаты применения алгоритма MD5 имеют фиксированную длину и очень равномерно распространены по всему диапазону возможных значений.

      Может быть сформирована входная строка, соответствующая заданной выходной строке алгоритма MD5, или созданы две входные строки, обработка которых привела бы к получению одинаковой выходной строки, но лишь при определенных условиях.

    Реализация алгоритма MD5 в языке PHP доступна в виде функции md5() , которая принимает в качестве входных данных строку и вырабатывает результаты в виде 32-символьного дайджеста. Например, выполнение следующего кода:

    Код PHP $str = "Hello world!"; echo "Хэш-код для строки "$str": ".md5($str)."
    "; $str = "Hello, world!"; echo "Хэш-код для строки "$str": ".md5($str)."
    "; $str = "Hello world"; echo "Хэш-код для строки "$str": ".md5($str)."
    ";

    приводит к получению в окне браузера таких результатов:

    Хеширование строк с помощью функции md5()

    Безусловно, в данном случае все входные строки весьма напоминают друг друга, но выходные строки не имеют какого-либо видимого сходства. Кроме того, диапазон возможных выходных значений является чрезвычайно огромным (16 32), поэтому вероятность совпадения результатов обработки двух различных строк (при котором вырабатывалось бы одно и то же значение MD5) крайне мала.

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

    Вычисление контрольной суммы сообщения или файла

    Для проверки того, не произошло ли искажение сообщения во время передачи, можно передать вместе с сообщением дайджест MD5, а после получения сообщения снова сформировать дайджест MD5. Если две версии дайджеста не совпадают, значит, во время передачи были допущены искажения.

    Контроль над тем, остается ли содержимое файла неизменным

    Эта задача аналогична задаче вычисления контрольной суммы. Алгоритм MD5 часто используется для выполнения такой операции в машинах поиска, если требуется периодически осуществлять проверку того, изменилась ли веб-страница, и в случае необходимости выполнять переиндексацию. Дело в том, что для дальнейшей сверки гораздо проще организовать хранение дайджеста MD5, чем всего исходного файла.

    Разбиение множества строк или файлов на подмножества

    Для решения задачи разбиения множества строк на N случайно выбранных подмножеств можно вычислить дайджест MD5 каждой строки, взять первые несколько шестнадцатеричных символов, преобразовать их в число, получить остаток от деления этого числа по модулю на количество подмножеств N и использовать этот остаток в качестве номера подмножества, в которое должна быть записана эта строка.

    Кроме функции md5(), в языке PHP предусмотрена функция md5_file() , которая принимает в качестве параметра имя файла и возвращает хэшированное значение MD5, соответствующие содержимому файла.

    Функции, предназначенные для оценки подобия строк

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

    Если в качестве критерия оценки подобия рассматривается сходство в написании, то можно применить метрику Левенштейна . Функция levenshtein() принимает в качестве параметров две строки и возвращает данные о том, какое минимальное количество операций добавления, удаления и замены символов необходимо для преобразования одной строки в другую. Рассмотрим пример:

    Код PHP echo levenshtein("Tim", "Time"); // 1 echo levenshtein("boy", "chefboyardee"); // 9 echo levenshtein("never", "clever"); // 2

    Если в качестве критерия подобия рассматривается фонетическое сходство, то для оценки подобия можно воспользоваться функциями soundex() и metaphone() . Обе эти функции принимают в качестве входного параметра рассматриваемую строку и возвращают ключевую строку с обозначением категории произношения данного слова (которое рассматривается как слово английского языка). Если два слова, используемых в качестве содержимого входной строки, точно соответствуют одному и тому же выходному значению, то они, по всей видимости, должны произноситься одинаково.

    Функции синтаксического анализа и разбиения на лексемы

    Иногда возникает необходимость обеспечить в программе разбиение строк на компоненты, руководствуясь собственным определением того, что должно рассматриваться в качестве компонента. Процесс разделения длинной строки на части называют разбиением на лексемы . В частности, такой процесс входит в состав общей процедуры интерпретации или компиляции любой компьютерной программы, включая программу на языке PHP. В языке PHP для этой цели предусмотрена специальная функция - strtok() .

    Функция strtok() принимает два параметра: строку, предназначенную для разбиения на лексемы, и строку, содержащую все разграничители (символы, которые рассматриваются как границы между лексемами). При первом вызове используются оба параметра и функция возвращает строковое значение, представляющее собой первую лексему. Для выборки последующих лексем выполняется такой же вызов, но параметр с исходной строкой исключается. Функция запоминает адрес строки, заданной в первом параметре, и использует ее в качестве текущей строки. Кроме того, эта функция запоминает, в каком месте была прекращена обработка при предыдущем вызове. Рассмотрим следующий пример:

    Код PHP $token = strtok("open-source HTML-embedded server-side Web scripting", " "); while($token) { echo $token."
    "; $token = strtok(" "); }

    который приводит к получению в окне браузера такого вывода:


    Использование функции strtok()

    Разбиение исходной строки осуществляется в том месте, где находится каждый пробел.

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

    Функция explode() принимает два параметра: разделительную строку и строку, которая должна быть разделена на лексемы. Эта функция возвращает массив, каждый элемент которого представляет собой подстроку, находящегося между экземплярами разделителя в строке, подлежащей разделению. Рассмотрим следующий пример:

    Код PHP $explode_result = explode("AND", "one AND a two AND a three");

    который приводит к получению массива $explode_result , содержащего три элемента, каждый из которых представляет собой строку: "one ", " a two " и " a three". В данном конкретном примере не встречается ни одной прописной буквы в какой-либо из строк, содержащихся в массиве, поскольку разделитель AND не присутствует в результате.

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

    С другой стороны, строка с разграничителями в функции strtok() задает множество отдельных символов, каждый из которых рассматривается как разграничитель. Это означает, что функция explode() действует более избирательно, но в большей степени подвержена нарушениям в работе. В частности, если в длинной строке будет случайно пропущен даже единственный пробел или символ обозначения конца строки, входящий в состав разделителя, то может быть нарушена вся работа этой функции.

    Функция explode() имеет обратную по отношению к ней функцию, implode() , которая принимает два параметра: соединительную строку (аналогичную разделительной строке в функции explode()) и массив строк, подобный тому, который возвращает функция explode(). Функция implode() возвращает строку, созданную путем вставки соединительной строки между всеми подряд идущими строковыми элементами в массиве.

    Функции Регулярные выражения 1 2 3 4 5 6 7 8 9 10

    Задача

    Задача. Дана строка "minsk" . Сделайте из нее строку "MINSK" .

    Решение: воспользуемся функцией strtoupper и сразу получим результат:

    Задача

    Задача. Дана строка "минск" . Сделайте из нее строку "МИНСК" .

    Решение: функцией strtoupper мы не можем воспользоваться, так как она некорректно работает с русскими буквами. Воспользуемся функцией mb_strtoupper и сразу получим результат:

    Задача

    Задача. Дана строка "MINSK" . Сделайте из нее строку "Minsk" .

    Решение: готовой функции для решения задачи в PHP не существует. Поэтому сначала воспользуемся функцией strtolower (в результате получится "minsk" ), а затем функцией ucfirst :

    Задача

    Задача. В переменной $date лежит дата в формате "31-12-2030" "2030.12.31" .

    Решение: для начала разобьем строку "31-12-2030" в массив с помощью функции explode :

    В полученном массиве в $arr будет лежать 31 (то есть день), в $arr - месяц, а в $arr - год. Сольем элементы этого массива в новую строку:

    Задачи для решения

    Работа с регистром символов

    Дана строка "php" . Сделайте из нее строку "PHP" .

    Дана строка "PHP" . Сделайте из нее строку "php" .

    Дана строка "london" . Сделайте из нее строку "London" .

    Дана строка "London" . Сделайте из нее строку "london" .

    Дана строка "london is the capital of great britain" . Сделайте из нее строку "London Is The Capital Of Great Britain" .

    Дана строка "LONDON" . Сделайте из нее строку "London" .

    Работа с strlen

    Дана строка "html css php" . Найдите количество символов в этой строке.

    Дана переменная $password , в которой хранится пароль пользователя. Если количество символов пароля больше 5-ти и меньше 10-ти, то выведите пользователю сообщение о том, что пароль подходит, иначе сообщение о том, что нужно придумать другой пароль.

    Работа с substr

    Дана строка "html css php" . Вырежьте из нее и выведите на экран слово "html", слово "css" и слово "php".

    Дана строка. Вырежите и выведите на экран последние 3 символа этой строки.

    "http://"

    Дана строка. Проверьте, что она начинается на "http://" или на "https://" . Если это так, выведите "да", если не так - "нет".

    ".png" . Если это так, выведите "да", если не так - "нет".

    Дана строка. Проверьте, что она заканчивается на ".png" или на ".jpg" . Если это так, выведите "да", если не так - "нет".

    Дана строка. Если в этой строке более 5-ти символов - вырежите из нее первые 5 символов, добавьте троеточие в конец и выведите на экран. Если же в этой строке 5 и менее символов - просто выведите эту строку на экран.

    Работа с str_replace

    Дана строка "31.12.2013" . Замените все точки на дефисы.

    Дана строка $str . Замените в ней все буквы "a" на цифру 1, буквы "b" - на 2, а буквы "c" - на 3.

    Дана строка с буквами и цифрами, например, "1a2b3c4b5d6e7f8g9h0 ". Удалите из нее все цифры. То есть в нашем случае должна получится строка "abcbdefgh ".

    Работа с strtr

    Дана строка $str . Замените в ней все буквы "a" на цифру 1, буквы "b" - на 2, а буквы "c" - на 3. Решите задачу двумя способами работы с функцией strtr (массив замен и две строки замен).

    Работа с substr_replace

    Дана строка $str . Вырежите из нее подстроку с 3-го символа (отсчет с нуля), 5 штук и вместо нее вставьте "!!!".

    Работа с strpos, strrpos

    Дана строка "abc abc abc". Определите позицию первой буквы "b".

    Дана строка "abc abc abc". Определите позицию последней буквы "b".

    Дана строка "abc abc abc". Определите позицию первой найденной буквы "b", если начать поиск не с начала строки, а с позиции 3.

    Дана строка "aaa aaa aaa aaa aaa". Определите позицию второго пробела.

    Проверьте, что в строке есть две точки подряд. Если это так - выведите "есть", если не так - "нет".

    Проверьте, что строка начинается на "http://" . Если это так - выведите "да", если не так - "нет".

    Работа с explode, implode

    Дана строка "html css php" . С помощью функции explode запишите каждое слово этой строки в отдельный элемент массива.

    Дан массив с элементами "html", "css", "php" . С помощью функции implode создайте строку из этих элементов, разделенных запятыми.

    В переменной $date лежит дата в формате "2013-12-31" . Преобразуйте эту дату в формат "31.12.2013" .

    Работа с str_split

    Дана строка "1234567890" . Разбейте ее на массив с элементами "12", "34", "56", "78", "90" .

    Дана строка "1234567890" . Разбейте ее на массив с элементами "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" .

    Дана строка "1234567890" . Сделайте из нее строку "12-34-56-78-90" не используя цикл.

    Работа с trim, ltrim, rtrim

    Дана строка. Очистите ее от концевых пробелов.

    Дана строка "/php/" . Сделайте из нее строку "php" , удалив концевые слеши.

    Дана строка "слова слова слова." . В конце этой строки может быть точка, а может и не быть. Сделайте так, чтобы в конце этой строки гарантировано стояла точка. То есть: если этой точки нет - ее надо добавить, а если есть - ничего не делать. Задачу решите через rtrim без всяких ифов.

    Работа с strrev

    Дана строка "12345" . Сделайте из нее строку "54321" .

    Проверьте, является ли слово палиндромом (одинаково читается во всех направлениях, примеры таких слов: madam, otto, kayak, nun, level ).

    Работа с str_shuffle

    Дана строка. Перемешайте символы этой строки в случайном порядке.

    Создайте строку из 6-ти случайных маленьких латинских букв так, чтобы буквы не повторялись. Нужно сделать так, чтобы в нашей строке могла быть любая латинская буква, а не ограниченный набор.

    Работа с number_format

    Дана строка "12345678" . Сделайте из нее строку "12 345 678" .

    Работа с str_repeat

    Работа с strip_tags и htmlspecialchars

    Дана строка "html, php, js" . Удалите теги из этой строки.

    Дана строка $str . Удалите все теги из этой строки, кроме тегов и .

    Дана строка "html, php, js" . Выведите ее на экран "как есть" : то есть браузер не должен преобразовать в жирный.

    Работа с chr и ord

    Узнайте код символов "a", "b", "c", пробела .

    Выведите на экран символ с кодом 33 .

    Запишите в переменную $str случайный символ - большую букву латинского алфавита. Подсказка: с помощью таблицы ASCII определите какие целые числа соответствуют большим буквам латинского алфавита.

    Запишите в переменную $str случайную строку $len длиной, состоящую из маленьких букв латинского алфавита. Подсказка: воспользуйтесь циклом for или while.

    Дана буква английского алфавита. Узнайте, она маленькая или большая.

    Работа с strchr, strrchr

    Дана строка "ab-cd-ef" . С помощью функции strchr выведите на экран строку "-cd-ef" .

    Дана строка "ab-cd-ef" . С помощью функции strrchr выведите на экран строку "-ef" .

    Работа с strstr

    Дана строка "ab--cd--ef" . С помощью функции strstr выведите на экран строку "--cd--ef" .

    Задачи

    Преобразуйте строку "var_test_text" в "varTestText" . Скрипт, конечно же, должен работать с любыми аналогичными строками.

    Дан массив с числами. Выведите на экран все числа, в которых есть цифра 3.


    Компьютеры. Интернет. Железо. Ноутбук

    © Copyright 2024,
    cktomilino.ru -Компьютеры. Интернет. Железо. Ноутбук

    • Рубрики
    • Windows 7
    • Интернет
    • Windows XP
    • Железо
    • Windows 7
    • Интернет
    • Windows XP
    • Железо