Функции работы со строками на php. String пример - Проверка длины строки в 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, которая отображает актуальную информацию.
Строки - это один из основных типов переменных в PHP . И с ними приходится работать наравне с числами, с булевскими переменными и массивами. Разумеется, разработчики PHP , чтобы облегчить нам работу со строками , уже встроили много готовых функций для нас. И о самых часто используемых мы и поговорим.
Начнём с функции, которую я использую при работе со строками в PHP регулярно - strlen() . Данная функция возвращает длину строки (количество символов в строке):
$str = "This is my string";
echo strlen($str);
?>
Думаю, что данная функция в комментариях не нуждается.
Также имеются две часто используемые строковые функции - это strtolower() и strtoupper() . Эти функции позволяют перевести строку в нижний и верхний регистр соответственно:
$str = "This is my string";
echo strtolower($str)."
";
echo strtoupper($str);
?>
Очень полезная строковая функция - substr() , которая возвращает подстроку из исходной строки:
$str = "This is my string";
echo substr($str, 1)."
";
echo substr($str, 4, 2)."
";
?>
Как видите, данная функция может содержать два, либо три параметра. Первый параметр - это исходная строка, второй параметр - это номер символа в исходной строке, который потом станет первым в полученной строке. Обратите внимание: нумерация символов начинается с 0 (то есть в нашем примере, 1-ый символ - "h "). Третий параметр означает длину строки, которую мы хотим получить. Если этот параметр не задан, то возвращается строка, начиная со второго параметра и до конца строки. В общем, смотрите на результат, и Вам всё станет ясно.
Ещё одна полезная строковая функция в PHP - это str_replace() . Как следует из названия, данная функция возвращает строку с заменой какой-то части:
$str = "This is my string";
echo str_replace("my", "your", $str);
?>
На выходе у нас получилась следующая строка: "This is your string ". То есть данная функция заменила строку, заданную первым параметром, на строку, заданную вторым параметром, в строке, заданной третьим параметром, и вернула результат.
И последняя функция, которую мы с Вами рассмотрим, - это strpos() . Данная функция ищет вхождение подстроки в строку и возвращает номер первого символа вхождения (напоминаю, что нумерация символов начинается с 0, а не с 1 ):
$str = "This is my string";
echo strpos($str, "is");
?>
Как видите, данная функция очень простая и очень важная, так как позволяет осуществлять поиск в строке. Также у функции strpos() есть ещё один необязательный параметр, задающий смещение. Напоминаю, что данная функция ищет первое вхождение. Например, в нашем примере "is " встречается в строке дважды, но вернула эта функция номер символа при первом вхождении. Поэтому для того, чтобы получить номера и других вхождений необходимо задавать третий параметр - смещение:
$str = "This is my string";
echo strpos($str, "is", 4);
?>
Таким образом, теперь мы получили номер символа в следующем вхождении. И, напоследок, хочется сказать, что если вхождение не будет найдено, то функция вернёт false . И вот на этом моменте у многих бывают ошибки. Давайте приведу простой пример:
$str = "This is my string";
if (strpos($str, "Th") == false) echo "Строка не найдена";
else echo "Строка найдена";
?>
Очевидно, что "Th " содержится в исходной строке, и номер символа первого вхождения - это 0 . Но если Вы запустите этот скрипт, то увидите, что "строка не найдена ". Почему? Если Вы читали статью об операторе эквивалентности , то без проблем ответите на этот вопрос. Однако, если нет, то поясняю. Дело в том, что так как у нас функция strpos() вернула 0 , а 0 с точки зрения PHP - это false , то он без проблем сделал вывод о том, что условие истинно (ведь слева false и справа false ). Как быть? Ответ прост: воспользоваться оператором эквивалентности (обозначается === ), который сравнивает не только значения (которые в нашем примере равны для PHP ), но и их типы:
$str = "This is my string";
if (strpos($str, "Th") === false) echo "Строка не найдена";
else echo "Строка найдена";
?>
И вот теперь Вы увидите, что "строка найдена ". Как видите, оператор эквивалентности может заявить о себе в любую минуту, и всегда нужно о нём помнить, иначе Вам не избежать труднодоступных ошибок.
Конечно, это далеко не весь набор строковых функций , которые нам предоставили разработчики PHP , но я, исходя из своей практики, привёл Вам список самых часто используемых строковых функций в PHP .
длина символах (7)
=> string(141) означает, что $ message - массив, поэтому вы должны сделать strlen($message) < 141 ...
У меня есть строка длиной 141 символ. Используя следующий код, у меня есть оператор if, чтобы вернуть сообщение, если строка больше или меньше 140.
Libxml_use_internal_errors(TRUE); $dom = new DOMDocument(); $dom->loadHTMLFile($source); $xml = simplexml_import_dom($dom); libxml_use_internal_errors(FALSE); $message = $xml->xpath("//div[@class="contest"]"); if (strlen($message) < 141) { echo "There Are No Contests."; } elseif(strlen($message) > 142) { echo "There is One Active Contest."; }
Я использовал var_dump в $ message, и он показывает, что строка => string(141) вот моя проблема. Когда я изменяю числа для оператора if на <130 и> 131, он все равно возвращает 1-е сообщение, хотя строка больше 131. Независимо от того, какое число я использую менее 141, я всегда получаю «Нет конкурсов». вернулся ко мне.
=> string(141) означает, что $ message - это массив, а не строка, а $ message - строка длиной 141 символ
xpath не возвращает строку. Он возвращает массив с элементами xml, которые могут быть отправлены в строку.
If (count($message)) { if (strlen((string)$message) < 141) { echo "There Are No Contests."; } else if(strlen((string)$message) > 142) { echo "There is One Active Contest."; } }
вместо этого попробуйте общий синтаксис:
If (strlen($message)<140) { echo "less than 140"; } else if (strlen($message)>140) { echo "more than 140"; } else { echo "exactly 140"; }
Поскольку $xml->xpath всегда возвращает массив , strlen ожидает строку .
У меня были проблемы с этим, и, наконец, я решил создать собственное решение. Без использования механизма регулярных выражений :
Function contains($text, $word) { $found = false; $spaceArray = explode(" ", $text); $nonBreakingSpaceArray = explode(chr(160), $text); if (in_array($word, $spaceArray) || in_array($word, $nonBreakingSpaceArray)) { $found = true; } return $found; }
Вы можете заметить, что предыдущие решения не являются ответом на то, что слово используется как префикс для другого. Чтобы использовать ваш пример:
$a = "How are you?"; $b = "a skirt that flares from the waist"; $c = "are";
С примерами выше, как $a и $b содержит $c , но вы можете захотеть, чтобы ваша функция сообщила вам, что только $a содержит $c .
Программистам очень часто приходится иметь дело с различными функциями работы со строками в 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 - переводит строку в верхний регистр
Если этот сайт оказался вам полезен, вы можете помочь в его развитии, поставив
Любой уважающий себя веб-программист должен знать язык РНР, который может использоваться для создания веб-страниц. Этот язык основан на С и С++, и поэтому в нём присутствует множество конструкций, характерных для этого языка. Например, в PHP длина строки возвращается функцией с таким же названием, как и в С. Эта статья рассказывает о строках, а также об операциях, которые можно выполнять с ними.
Но прежде чем говорить о функциях, дадим основное определение. Строка - это последовательность символов, каждый из которых занимает ровно один байт. Значит, в РНР поддерживается 256 символов. Из этого логично вытекает, что поддержка Юникода в данном языке отсутствует - ведь в Юникоде символов гораздо больше.
Какие же операции со строками есть в PHP? Длина строки, их конкатенация (соединение), возвращение кода символа и наоборот - самые простые примеры. Есть и посложнее - поиск подстроки, хеширование, инвертирование. А есть и такие как удаление тегов, поиск по шаблону, разбивка на подстроки с помощью разделителя… Всего не перечислишь! Поэтому мы расскажем о наиболее распространённых и полезных из них.
Самая первая и часто используемая функция в PHP - длина строки. Называется она strlen, а в качестве параметра принимает одну-единственную последовательность символов. Всё просто.
$bar=strlen ($foo); // $bar равен трём
В PHP длина строки может быть равна нулю. Такая строка называется пустой.
Следующая функция - конкатенация или слияние. Проще говоря, она из двух строк делает одну.
$foo=”Привет,”;
$bar=” мир!”;
$baz=concat ($foo, $bar);
echo $baz; // выведет “Привет, мир!”
Есть и две обратные функции для работы с отдельными символами. Ord - возвращает код символа, а chr - определяет символ по коду.
$bar=ord ($foo); // $bar равен 113
$baz=chr ($bar); // $baz равен “q”
Нельзя не упомянуть ещё об одной интересной функции - date. В PHP строки могут использоваться в качестве шаблона для вывода времени. Например, если передать в date строку “H:m:s” и вывести результат, то на экране появится текущее время сервера, разделённое двоеточием, например, “11:08:34”.
Теперь рассмотрим функцию explode. Она разбивает строку на элементы, считая границей каждого указанный символ. Звучит довольно сложно, но на самом деле всё достаточно понятно. Например, есть строка “root|12:56:49|wheel”. Тогда можно написать так:
$foo=explode(“root|12:56:49|wheel”, “|”);
В итоге массив $foo будет содержать три элемента - “root”, “12:56:49”, “wheel”. Если при вызове функции не указывать разделитель, то по умолчанию он будет считаться пробелом. Есть ещё один необязательный параметр - максимальное количество выделяемых подстрок.
Следующая функция удаляет из строки HTML-теги. Называется она strip_tags. Как и у функции explode, у неё есть необязательный второй параметр - список тегов, которые необходимо оставить.
Простые функции - конкатенация, поиск подстроки, длина строки - PHP интерпретирует достаточно быстро. А вот обработка поиска по шаблону или удаление тегов может выполняться достаточно долго. Поэтому программы нужно составлять грамотно, с учётом того, что её выполнение занимает определённое время. Нормальный скрипт должен выполняться максимум 10 секунд, а после этого нужно отобразить хотя бы часть веб-страницы, иначе пользователь с неё уйдёт. Но обычно веб-приложения работают гораздо быстрее, ведь РНР-код выполняется на сервере, и браузер принимает сформированную на основе скрипта страницу, в которой содержится вывод PHP-скрипта.