Php символ из строки. Функции работы со строками в PHP. Описание строк в PHP
Сайты можно разделить на статические и динамические. После освоения HTML и CSS, которые позволяют сделать красивую визитку в интернете, многие задумываются, как создать динамический сайт на PHP. При этом верстальщик должен учитывать, что теперь он начинает изучать веб-программирование: принципы работы с сайтом будут отличаться. Одна из первых проблем, с которой сталкивается начинающий в PHP — работа со строками, их чтение и обработка.
Стоит отметить, что в PHP подразумевают большое количество методов, поэтому начинать их изучение стоит с самых простых манипуляций, таких как вывод строки, поиск, получение или замена подстроки, изменение регистра и возвращение длины строки. Многие функции плохо работают с кириллическими символами. Поэтому все примеры написаны на английском для наглядности. Для кириллических строк используются те же функции, но с префиксом mb_ (например, mb_strpos()). Прежде чем использовать аналоги, в php.ini необходимо раскомментировать строку;extension=php_mbstring.dll, просто убрав точку с запятой.
Создание и вывод строки
Мы разберем вывод строки на экран с помощью известной всем языковой конструкции echo. Программист может вывести строку сразу:
echo "Это Новая Строка"
или сначала создать переменную, а затем вывести ее на экран:
$str = "Это Новая Строка";
Если нужно вывести несколько строк в одной, то прибегают к их конкатенации:
echo "Это" . " Новая" . " Строка";
$str1 = "Это";
$str2 = "Новая";
$str3 = "Строка";
echo $str1 . $str2 . $str3;
В последнем случае на экран будет выведено ЭтоНоваяСтрока . Пробел можно добавить сразу при вызове echo:
echo $str1 . " " . $str2 . " " . $str3;
В этом случае на экран выведется: "Это Новая Строка". Конкатенация возможна не только при выводе, но и при создании строки:
$str1 = "Это";
$str2 = "Новая";
$str3 = "Строка";
$string = $str1 . " " . $str2 . " " . $str3;
echo $string;
Echo выводит как так и кириллические. Если одна из переменных содержала число, то при конкатенации это число будет преобразовано в соответствующую строку:
$sum = $i + $i; //теперь $sum содержит число 4
echo $i . " + " . $i . " = " . $sum;
На экран будет выведено: "2 + 2 = 4".
Служебные символы
Допустим, строка определена с помощью ($string = "Вот так"). Тогда можно совершенно спокойно использовать управляющие последовательности:
- \n совершает перевод строки;
- \r возвращает каретку;
- \" экранирует двойные кавычки:
- echo "Строка с \"двойными\" кавычками"; //Строка с "двойными" кавычками
- \$ экранирует доллар;
- \\ экранирует обратную косую черту.
Последовательностей гораздо больше, все их найти можно в официальной документации PHP.
Как найти позицию первого вхождения подстроки
Допустим, у нас есть простая строка:
Также у нас есть две строки с именами:
$name = "Yemelyan";
$anotherName = "Katherin";
Нам необходимо узнать, содержит ли первая строка эти два имени. Для этого используется функция strpos($str, $search). Она возвращает позицию искомой подстроки $search, если эта строка содержится в исходной, $str. В противном случае функция возвращает булево значение false. Например, strpos($string, $anotherName) вернет false, а strpos($string, $name) — целое число. Код будет таким (напишем вариант, когда позиция выводится на экран):
$string = "My name is Yemelyan and I am 27 year old";
$name = "Yemelyan";
$anotherName = "Katherin";
echo strpos($string, $anotherName); //выведет false
echo strpos($string, $name); //выведет позицию первого вхождения подстроки
Учтите, что нумерация строки начинается с нуля, то есть в нашем случае последняя строка выведет число 11 (пробелы также считаются).
Поиск позиции последнего вхождения подстроки и подводные камни
Если функция strpos() возвращает позицию первого вхождения, то обратная ей функция strrpos() ищет последнее вхождение подстроки.
Здесь есть некоторые подводные камни, связанные с началом нумерации. Это стоит учитывать: в PHP работа со строками может быть осложнена ограничениями в сравнениях. Так, лучше не использовать операцию сравнения с отрицанием: strpos($str, $search)!=false. В любой версии PHP примеры с подобной эквиваленцией могут работать неправильно, ведь нумерация строк начинается с нуля, а в логической интерпретации 0 и есть false. Это распространяется и на функцию strrpos().
Как найти число вхождений подстроки
Часто нужно найти не позицию первого или последнего вхождения подстроки в строку, а общее их число. Для этого используется функция substr_count(), которая обрабатывает по меньшей мере две переменные: substr_count($str, $search). Возвращает целое число. Если необходимо уменьшить область поиска по строке, то в функцию передаются еще две переменные: начало и конец строки соответственно. То есть функция в этом случае вызывается так: substr_count($str, $search, $start, $end). Функция будет искать подстроку $search на промежутке от $start до $end исходной строки $str. Если строка не будет найдена, то функция вернет ноль.
Как изменить регистр строки в PHP: примеры
Изменение регистра часто используется для сравнения строк и Допустим, пользователь должен ввести имя верховного бога в В программе есть вариант "Один", с которым и будет сравниваться ответ пользователя. Если введенный текст не будет совпадать с имеющимся (например, пользователь напишет "один" или "ОДИН"), то программа вернет значение false вместо true. Чтобы этого избежать, применяется функция изменения регистра. Это часто используется, если сайт на PHP имеет теги: вместо сотни вариантов слова "личное" ("Личное", "личное", "ЛИЧНОЕ" и т. п.) есть только один тег в нижнем регистре.
Функция strtolower() изменяет регистр на нижний. Допустим, есть строка $catName = "Fluffy". Функция strtolower($catName) вернет строку "fluffy". Изменить регистр на верхний можно с помощью функции strtoupper().
Как найти длину строки в PHP: работа с функциями
Часто требуется найти длину строки. Например, в PHP работа со строками такого рода может понадобиться в создании цикла. Для поиска строки используется функция strlen(), которая возвращает число — количество символов. Нельзя забывать, что последний символ будет иметь номер strlen($str)-1, так как нумерация начинается с нуля.
Получение и замена подстроки в PHP: работа со строками
Получение подстроки осуществляется функцией substr(), которая может принимать два или три аргумента: substr($str, $start, $end). Допустим, у нас есть строка $string = "Fluffy cat", и мы хотим получить подстроку со второго по четвертый символ. Так как нумерация начинается с нуля, то переменная с этой подстрокой будет выглядеть так: $newString = substr($string, 1, 4). Если же мы введем $newString = substr($string, 1), то получим подстроку со второго символа по последний (то есть "luffy"). Этот код идентичен полному коду строки с использованием strlen(): substr($string, 1, strlen($string)).
Для замены подстроки используется функция str_replace(), которая принимает три переменные: str_replace($subStr, $newSub, $str). В отличие от многих функций, str_replace() корректно работает с кириллическими символами и не имеет аналога с префиксом. Пример:
$str = "Сегодня ужасная погода!";
$newStr = str_replace("ужасная", "чудесная", $str); //Сегодня чудесная погода!
Перевод строки в число
Каждому, кто изучает веб-программирование, рано или поздно приходится переводить строку в число. Для этого используются две похожие функции: intval() и floatval(), каждая из которых принимает одну переменную $string. Друг от друга они отличаются только типом возвращаемых данных: intval() возвращает целое число, а floatval() - число с плавающей точкой.Для использования как intval(), так и floatval() необходимо, чтобы строка начиналась с цифр, они и будут преобразованы в число. Если после цифр будет идти любой набор букв, они просто проигнорируются. В том случае, если строка начинается с букв, использование функции вернет ноль. В идеале же строка должна содержать в себе исключительно цифры.
Перевод числа в строку
Часто требуется перевести числа в строку. Скажем, если необходимо взять половинку числа и возвести ее в квадрат (например, проверить, выполняется ли равенство: 88 х 88 + 33 х 33 = 8833). В этом случае используется функция strval(), которая возвращает строку с числом. После этого с новой строкой можно совершать все прочие действия: изменять, искать вхождение подстроки и другие функции. При необходимости строку можно вновь перевести в число уже описанным выше способом.
В статье была рассмотрена лишь малая часть всех функций, связанных со строками. Часть неописанных функций работает с символами, но большая не была включена в материал из-за специфичности. Для ознакомления с этими функциями необходимо перейти к чтению официальной документации по PHP, которая отображает актуальную информацию.
Вставляет HTML код разрыва строки перед каждым переводом строки
Особенности операторов сравнения применительно к строкам.
$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 = 4substr_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
Если функция 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-подобными конструкциями:
$source = array("
", "
Today In PHP-Powered News
"; print strtr($string, $source); // Выводится строка "Преобразование 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
.
Очень часто требуется обрабатывать введенные пользователем данные в текстовые поля. Для этого и существуют строковые функции в PHP . С их помощью мы можем обрабатывать текстовую информацию так, как нам нужно. В этой статье мы в начале разберем основные строковые функции, а потом напишем небольшой пример, для закрепления.
Вот список основных, и самых используемых строковых функций в php:
- srelen ("текст") — считает количество символов в строке. Вот небольшой пример:
- str_replace("что заменять", "на что заменять", "текст"); - функция нужна для замены подстроки в строке. Например, нам нужно заменить слово студия на «ля-ля-ля», в предложении: «Дизайн студия OX2 на рынке 20 лет» На экране увидим: «Дизайн ля-ля-ля OX2 на рынке 20 лет »
- trim ("текст", "символы")
— удаляет символы по краям. Например, нам нужно удалить по-краям пробелы и запятые в строке - « , Дизайн студия ox2.ru , ", ", »
. Для этого напишем код:
Первый параметр строка, второй — символы, которые нужно удалить по краям (если не указывать второй параметр, то обрезаться будут только пробелы).
На экране увидим «Дизайн студия ox2.ru» , без пробелов и запятых. Есть аналогичные функции ltrim — удаляет символы слева, и rtrim — справа.
Функция очень часто используется при создании интернет-магазинов, например при авторизации, чтобы пользователь при копировании пароля из блокнота случайно не вставил лишние пробелы или другие знаки. - substr("Строка", "Начальная позиция", "Конечная позиция"); - возвращает часть строки. Например, нам нужно в строке "Дизайн студия ox2.ru занимается созданием сайтов и интернет-магазинов" обрезать все лишнее, и оставить только , для этого напишем код: Вырезаем подстроку, начинаю с 14-ого символа, и заканчивая 34. На экране увидим «ox2.ru занимается созданием сайтов» . Если последний параметр (34) не указывать, то текст будет вырезан с 14-ой позиции до конца строки.
- strpos("Строка", "подстрока", позиция начального символа);
— возвращает позицию найденной подстроки в строке. Например, нам нужно узнать позицию слова "ox2"
в строке "Компания ox2.ru умеет создавать интернет магазины. В дизайн студии ox2.ru вы можете заказать сайт"
, пишем код:
На экране увидим 9, т.к. с 9-ого символа начинается первое вхождение слова ox2
. Если указать 3-ий параметр то поиск вхождения будет с этой позиции.
Так же есть функция strrpos , она ищет справа налево. Если в этом примере указать вместо strpos - strrpos, то на экране увидим 67, т.к. справа первое вхождение начинается с 67-ого символа.
Теперь напишем пример, для закрепления материала. В нашем скрипте будем обрабатывать данные из текстового поля «Адрес сайта:». Адрес сайта можно ввести так: «http://ox2.ru/», можно так «www.ox2.ru», можно так: «ox2.ru/», и т.д. Вариантом достаточно много. А для нашего интернет-магазина обязательное условие, это хранение всех данных о пользователе в едином формате («ox2.ru», без http, www, пробелов и слэшей по краям!).
Конечно это не самый удачный вариант, использовать такое количество строковых функций для обрезания лишнего, можно воспользоваться той же функцией str_replace :
Но цель урока показать использование этих функций в связке.
Работать со строковыми функциями приходиться не только если цены на создание сайтов высокие, в эконом сайтах они тоже почти всегда используются.
При разработке интернет магазинов очень часто требуется обрабатывать введенные пользователем данные в текстовые поля. Для этого и существуют строковые функции в PHP. С их помощью мы можем обрабатывать текстовую информацию так, как нам нужно. В этой статье мы в начале разберем основные строковые функции, а потом напишем небольшой пример, для закрепления.
OX2 2014-10-05 2014-10-05Задача
Задача. Дана строка "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.
Введение в ООП
-
Урок №
новая вкладка с new.code.mu
Введение -
Урок №
новая вкладка с new.code.mu
Свойства -
Урок №
новая вкладка с new.code.mu
Методы -
Урок №
новая вкладка с new.code.mu
Свойства и $this -
Урок №
новая вкладка с new.code.mu
Методы и $this -
Урок №
новая вкладка с new.code.mu
public private -
Урок №
новая вкладка с new.code.mu
Конструктор -
Урок №
новая вкладка с new.code.mu
Геттеры сеттеры -
Урок №
новая вкладка с new.code.mu
Свойства только для чтения -
Урок №
новая вкладка с new.code.mu
Один класс - один файл -
Урок №
новая вкладка с new.code.mu
Объекты в массиве
Функции для работы со строками
Для работы со строками в PHP существует множество полезных функций.
Кратко разберем часть функций для работы со строками.
Базовые строковые функции
strlen(string $st)
Одна из наиболее полезных функций. Возвращает просто длину строки, т. е., сколько символов содержится в $st . Строка может содержать любые символы, в том числе и с нулевым кодом (что запрещено в Си). Пример:
$x = "Hello!";
echo strlen($x); // Выводит 6
strpos(string $where, string $what, int $fromwhere=0)
Пытается найти в строке $where подстроку (то есть последовательность символов) $what и в случае успеха возвращает позицию (индекс) этой подстроки в строке. Необязательный параметр $fromwhere можно задавать, если поиск нужно вести не с начала строки $from , а с какой-то другой позиции. В этом случае следует эту позицию передать в $fromwhere . Если подстроку найти не удалось, функция возвращает false . Однако будьте внимательны, проверяя результат вызова strpos() на false - используйте для этого только оператор === . Пример:
echo strpos("Hello","el"); // Выводит 1
И еще пример:
if (strpos("Norway","rwa") !== false) echo "Строка rwa есть в Norway";
// При сравнении используйте операторы тождественных сравнений (===) (!==) чтобы избежать проблем с определением типов
substr(string $str, int $start [,int $length])
Данная функция тоже востребуется очень часто. Ее назначение - возвращать участок строки $str , начиная с позиции $start и длиной $length . Если $length не задана, то подразумевается подстрока от $start до конца строки $str . Если $start больше, чем длина строки, или же значение $length равно нулю, то возвращается пустая подстрока. Однако эта функция может делать и еще довольно полезные вещи. К примеру, если мы передадим в $start отрицательное число, то будет считаться, что это число является индексом подстроки, но только отсчитываемым от конца $str (например, -1 означает "начиная с последнего символа строки"). Параметр $length , если он задан, тоже может быть отрицательным. В этом случае последним символом возвращенной подстроки будет символ из $str с индексом $length , определяемым от конца строки. Примеры:
$str = "Programmer";
echo substr($str,0,2); // Выводит Pr
echo substr($str,-3,3); // Выводит mer
strcmp(string $str1, string $str2)
Сравнивает две строки посимвольно (точнее, побайтово) и возвращает: 0 , если строки полностью совпадают; -1 , если строка $str1 лексикографически меньше $str2 ; и 1 , если, наоборот, $str1 "больше" $str2 . Так как сравнение идет побайтово, то регистр символов влияет на результаты сравнений.
strcasecmp(string $str1, string $str2)
То же самое, что и strcmp(), только при работе не учитывается регистр букв. Например, с точки зрения этой функции "ab" и "AB" равны.
Функции для работы с блоками текста
Перечисленные ниже функции чаще всего оказываются полезны, если нужно проводить однотипные операции с многострочными блоками текста, заданными в строковых переменных.
str_replace(string $from, string $to, string $str)
Заменяет в строке $str все вхождения подстроки $from (с учетом регистра) на $to и возвращает результат. Исходная строка, переданная третьим параметром, при этом не меняется. Эта функция работает значительно быстрее, чем ereg_replace()
, которая используется при работе с регулярными выражениями PHP, и ее часто используют, если нет необходимости в каких-то экзотических правилах поиска подстроки. Например, вот так мы можем заместить все символы перевода строки на их HTML эквивалент - тэг
:
$st=str_replace("\n","
\n",$str)
Как видим, то, что в строке
\n тоже есть символ перевода строки, никак не влияет на работу функции, т. е. функция производит лишь однократный проход по строке. Для решения описанной задачи также применима функция nl2br() , которая работает чуть быстрее.
string nl2br(string $string)
Заменяет в строке все символы новой строки \n на
\n и возвращает результат. Исходная строка не изменяется. Обратите внимание на то, что символы \r, которые присутствуют в конце строки текстовых файлов Windows, этой функцией никак не учитываются, а потому остаются на старом месте.
WordWrap(string $str, int $width=75, string $break="\n")
Эта функция, появившаяся в PHP4 , оказывается невероятно полезной, например, при форматировании текста письма перед автоматической отправкой его адресату при помощи mail() . Она разбивает блок текста $str на несколько строк, завершаемых символами $break , так, чтобы на одной строке было не более $width букв. Разбиение происходит по границе слова, так что текст остается читаемым. Возвращается получившаяся строка с символами перевода строки, заданными в $break . Пример использования:
php
$
str
=
"Это текст электронного письма, которое нужно будет отправить адресату..."
;
// Разбиваем текст по 20 символов
$
str
=
WordWrap
($
str
,
20
,
"
"
);
echo
$
str
;
// Выводит:
/* Это текст
электронного письма,
которое нужно будет
отправить
адресату... */
?>
strip_tags (string $str [, string $allowable_tags])
Еще одна полезная функция для работы со строками. Эта функция удаляет из строки все тэги и возвращает результат. В параметре $allowable_tags можно передать тэги, которые не следует удалять из строки. Они должны перечисляться вплотную друг к другу. Примеры:
$stripped = strip_tags ($str); // Удаляет все html - теги из строки (текста)
$stripped = strip_tags($str, "
Функции для работы с отдельными символами
Как и в других языках программирования, в PHP можно работать с символами строк отдельно.
Обратиться к любому символу строки можно по его индексу:
$str = "PHP";
echo $str; // Выводит "P"
chr(int $code)
Данная функция возвращает строку, состоящую из символа с кодом $code . Пример:
echo chr(75); //Выводит K
ord($char)
Данная функция возвращает код символа $char . Вот пример:
echo ord("A"); // Выводит 65 - код буквы "A"
Функции удаления пробелов
Иногда трудно даже представить, какими могут быть странными пользователи, если дать им в руки клавиатуру и попросить напечатать на ней какое-нибудь слово. Так как клавиша пробела - самая большая, то пользователи имеют обыкновение нажимать ее в самые невероятные моменты. Этому способствует также и тот факт, что символ с кодом 32, обозначающий пробел, как вы знаете, на экране не виден. Если программа не способна обработать описанную ситуацию, то она, в лучшем случае после тягостного молчания отобразит в браузере что-нибудь типа "неверные входные данные", а в худшем - сделает при этом что-нибудь необратимое.
trim(string $str)
Возвращает копию $str, только с удаленными ведущими и концевыми пробельными символами. Под пробельными символами я здесь и далее подразумеваю: пробел " ", символ перевода строки \n, символ возврата каретки \r и символ табуляции \t. Например, вызов trim(" test\n ") вернет строку "test". Эта функция используется очень широко. Старайтесь применять ее везде, где есть хоть малейшее подозрение на наличие ошибочных пробелов. Поскольку работает она очень быстро.
ltrim(string $st)
То же, что и trim() , только удаляет исключительно ведущие пробелы, а концевые не трогает. Используется гораздо реже.
chop(string $st)
Удаляет только концевые пробелы, ведущие не трогает.
Функции преобразования символов
Web-программирование - одна из тех областей, в которых постоянно приходится манипулировать строками: разрывать их, добавлять и удалять пробелы, перекодировать в разные кодировки, наконец, URL- кодировать и декодировать. В PHP реализовать все эти действия вручную, используя только уже описанные примитивы, просто невозможно из соображений быстродействия. Поэтому-то и существуют подобные встроенные функции.
strtr(string $str, string $from, string $to)
Эта функция применяется не столь широко, но все-таки иногда она бывает довольно полезной. Она заменяет в строке $str все символы, встречающиеся в $from , на их "парные" (то есть расположенные в тех же позициях, что и во $from) из $to .
Следующие несколько функций предназначены для быстрого URL-кодирования и декодирования.
URL-кодирование необходимо для передачи данных через интернет. Например, такое кодирование целесообразно, если вы передаете русскоязычную информацию в качестве параметра скрипта. Также подобное кодирование можно выполнить и для файла, чтобы не возникало коллизий из-за отсутствия поддержки 8-битных кодировок некоторыми серверами. Вот эти функции:
UrlEncode(string $str)
Функция URL-кодирует строку $str и возвращает результат. Эту функцию удобно применять, если вы, например, хотите динамически сформировать ссылку на какой-то сценарий, но не уверены, что его параметры содержат только алфавитно-цифровые символы. В этом случае воспользуйтесь функцией так:
<<< Назад
(Строки (Часть 2)) |
Содержание |
Вперед >>>
(Строки (Часть 4)) |
Есть еще вопросы или что-то непонятно - добро пожаловать на наш | |
|