PHP имеет большой выбор встроенных функций обработки строк, которые позволяют вам легко манипулировать строками практически любым возможным способом. Однако изучение всех этих функций, запоминание того, что они делают и когда они могут пригодиться, может быть немного сложным, особенно для новых разработчиков. Я не могу описать каждую строковую функцию в одной статье, и кроме того, для этого и нужно руководство по PHP! Но я покажу, как работать с некоторыми из наиболее часто используемых функций обработки строк, которые вам следует знать. После этого вы будете работать со струнами, как и любой концертный скрипач!
По делу
PHP предлагает несколько функций, которые позволяют вам манипулировать регистром символов в строке без необходимости редактировать строку символ за символом. Почему вы заботитесь об этом? Ну, может быть, вы хотите убедиться, что весь текст написан заглавными буквами, например, аббревиатуры, заголовки, выделение или просто для правильного использования заглавных букв. Или, может быть, вы просто хотите сравнить две строки и убедиться, что сравниваемые буквы имеют одинаковый набор символов. С функциями манипулирования делами довольно легко разобраться; вы просто передаете строку в качестве параметра функции, а возвращаемое значение — обработанная строка.
Если вы хотите, чтобы все буквы в определенной строке были в верхнем регистре, вы можете использовать strtoupper()
следующим образом:
<?php $str = "Like a puppet on a string."; $cased = strtoupper($str); // Displays: LIKE A PUPPET ON A STRING. echo $cased;
Возможно, это очевидно, но все же стоит отметить, что числа и другие не алфавитные символы не будут преобразованы.
Как вы, вероятно, можете догадаться, strtolower()
делает полную противоположность strtoupper()
и преобразует строку во все строчные буквы:
<?php $str = "LIKE A PUPPET ON A STRING."; $cased = strtolower($str); // Displays: like a puppet on a string. echo $cased;
Могут быть и другие случаи, когда вы хотите, чтобы определенные слова, такие как имена или названия, просто начинали с заглавной буквы. Для этого вы можете использовать ucwords()
:
<?php $str = "a knot"; $cased = ucwords($str); // Displays: A Knot echo $cased;
Также возможно манипулировать случаем только первой буквы строки, используя функции lcfirst()
и ucfirst()
. Если вы хотите, чтобы первая буква была строчной, используйте lcfirst()
. Если вы хотите, чтобы первая буква была заглавной, используйте ucfirst()
. Функция ucfirst()
вероятно, наиболее полезна, поскольку вы можете использовать ее, чтобы предложение всегда начиналось с заглавной буквы.
<?php $str = "how long is a piece of string?"; $cased = ucfirst($str); //Displays: How long is a piece of string? echo $cased;
Быстрая отделка
Иногда струну нужно обрезать по краям. Он может содержать пробел или другие символы в начале или конце, которые необходимо удалить. Пробел может быть реальным символом пробела, но также может быть табуляцией, возвратом каретки и т. Д. Один из примеров, когда вам может понадобиться сделать что-то подобное, это когда вы работаете с пользовательским вводом и хотите его очистить это, прежде чем вы начнете обрабатывать его. Функция trim()
в PHP позволяет вам делать это; Вы можете передать строку в качестве параметра, и все пробелы в начале и конце этой строки будут удалены:
<?php $str = " A piece of string? "; // Displays: string(22) " A piece of string? " var_dump($str); $trimmed = trim($str); // Displays: string(18) "A piece of string?" var_dump($trimmed);
trim()
также является многоцелевой, так как в дополнение к строке вы также можете передать ей набор символов, и он удалит все совпадающие из начала или конца:
<?php $str = "A piece of string?"; $trimmed = trim($str, "A?"); // Displays: string(16) " piece of string" var_dump($trimmed);
Вам нужно быть осторожным, когда вы работаете с этими дополнительными символами, так как trim()
удалит пробел, только если вы специально предоставите его как один из символов, который вы хотите удалить:
<?php $str = "A piece of string?"; $trimmed = trim($str, "A ?"); // Displays: string(15) "piece of string" var_dump($trimmed);
Хотя trim()
удаляет только символы в начале и конце строки, она удаляет как «A», так и пробел, потому что при удалении «A» пробел становится новым началом строки, и поэтому он также удаляется. ,
В ltrim()
также есть функции ltrim()
и rtrim()
которые похожи на функцию trim()
но удаляют только пробелы (или другие указанные символы) слева или справа от строки соответственно.
Как долго это (кусок) строки?
Очень часто при работе со строками вам захочется узнать, как долго это происходит. Например, когда вы имеете дело с формой, у вас может быть поле, в котором вы хотите убедиться, что пользователи не могут использовать определенное количество символов. Для подсчета количества символов в строке вы можете использовать функцию strlen()
:
<?php $str = "How long is a piece of string?"; $size = strlen($str); // Displays: 30 echo $size;
Обрезка строк по размеру
Другой распространенной ситуацией является нахождение определенного текста внутри заданной строки и его «вырезание», чтобы вы могли сделать с ним что-то еще. Чтобы сократить размер строки, вам нужна хорошая пара ножниц, а в PHP ваши ножницы являются функцией substr()
.
Чтобы использовать функцию substr()
, передайте строку, с которой вы хотите работать, в качестве параметра вместе с положительным или отрицательным целым числом. Число определяет, где вы начнете резать строку; 0 начинает вас с первого символа строки (помните, что при подсчете через строку первый символ слева начинается с позиции 0, а не 1).
<?php $str = "How to cut a string down to size"; $snip = substr($str, 13); //Displays: string down to size echo $snip;
Когда вы используете отрицательное число, substr()
будет начинаться в обратном направлении от конца строки.
<?php $str = "How to cut a string down to size"; $snip = substr($str, -7); //Displays: to size echo $snip;
Необязательный третий параметр для substr()
— это длина, другое целочисленное значение, которое позволяет вам указать количество символов, которые вы хотите извлечь из строки.
<?php $str = "How to cut a string down to size"; $snip = substr($str, 13, 6); //Displays: string echo $snip;
Если вам просто нужно найти позицию определенного фрагмента текста в строке и ничего больше, вы можете использовать функцию strpos()
которая возвращает позицию, выбранную вами от начала строки. Полезный трюк, особенно когда вы не знаете начальную позицию текста, который вы вырезаете из строки, состоит в объединении двух функций. Вместо указания начальной позиции в виде целого числа вы можете выполнить поиск определенного фрагмента текста и затем извлечь его.
<?php $str = "How to cut a string down to size"; $snip = substr($str, strpos($str, "string"), 6); //Displays: string echo $snip;
Своп магазин
Наконец, давайте рассмотрим замену фрагмента строки чем-то другим, для чего вы можете использовать str_replace()
. Это идеально подходит для ситуаций, когда вы просто хотите заменить экземпляры определенных слов или набор символов в строке и заменить их чем-то другим:
<?php $oldstr = "The cat was black"; $newstr = str_replace("black", "white", $oldstr); // Displays: The cat was white echo $newstr;
Вы также можете предоставить массивы для str_replace()
если вы хотите заменить несколько значений:
<?php $oldstr = "The flag was red white and blue."; $america = array("red", "white", "blue"); $germany = array("black", "red", "yellow"); $newstr = str_replace($america, $germany, $oldstr); // Displays: The flag was black red and yellow. echo $newstr;
str_replace()
чувствителен к регистру, поэтому, если вы не хотите беспокоиться об этом, вы можете использовать его нечувствительный к регистру брат, str_ireplace()
.
Резюме
Надеюсь, эта статья дала вам представление о некоторых вещах, которые вы можете делать со строками в PHP, и заставила вас хотеть узнать больше. Я действительно соскоблил верхушку айсберга! Лучшее место, чтобы узнать больше обо всех различных строковых функциях — это потратить некоторое время на чтение страницы «Строковые функции» в руководстве по PHP.
Мне бы хотелось узнать, какие строковые функции вы используете чаще всего, поэтому не стесняйтесь упоминать их в комментариях ниже.
Изображение через Vasilius / Shutterstock