Изучаем функции PHP для работы со строками. Часть 1
Дата публикации: 2011-01-11
От автора: в этой статье мы рассмотрим основные функции PHP для работы со строками.
Т.к. практически все CMS (может Ваши самописные или чьи-то типа free) работают с базами данных, то нам предстоит вплотную работать со строковыми переменными. Возможно, нужно будет где-то заменить определенный участок текста на другой текст. Или вставить в середине (в начала или в конце) какой-то статьи определенный тест.
Без базовых знаний работы с функциями строк в PHP мы ничего из выше перечисленных и многих других операций сделать не сможем.
Для начала мы изучим простой поиск и замену в строке.
Функция 1
Есть такая простая php функция substr_count(), которая считает количество подстрок в строке. Например, есть такая строка: «бетон и железобетон», наша цель найти кол-во подстрок «бетон». Функция вернет значение 2 (ибо найдет 2 подстроки, выделенные жирным шрифтом).
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Функции для работы со строками
Для получения информации о более сложной обработке строк обратитесь к функциями Perl-совместимых регулярных выражений. Для работы с многобайтовыми кодировками посмотрите на функции по работе с многобайтовыми кодировками.
Содержание
User Contributed Notes 24 notes
In response to hackajar yahoo
No string-to-array function exists because it is not needed. If you reference a string with an offset like you do with an array, the character at that offset will be return. This is documented in section III.11’s «Strings» article under the «String access and modification by character» heading.
I’m converting 30 year old code and needed a string TAB function:
//tab function similar to TAB used in old BASIC languages
//though some of them did not truncate if the string were
//longer than the requested position
function tab($instring=»»,$topos=0) <
if(strlen($instring)
I use these little doo-dads quite a bit. I just thought I’d share them and maybe save someone a little time. No biggy. 🙂
Just a note in regards to bloopletech a few posts down:
The word «and» should not be used when converting numbers to text. «And» (at least in US English) should only be used to indicate the decimal place.
Example:
1,796,706 => one million, seven hundred ninety-six thousand, seven hundred six.
594,359.34 => five hundred ninety four thousand, three hundred fifty nine and thirty four hundredths
/*
* example
* accept only alphanum caracteres from the GET/POST parameters ‘a’
*/
to: james dot d dot baker at gmail dot com
PHP has a builtin function for doing what your function does,
/**
Utility class: static methods for cleaning & escaping untrusted (i.e.
user-supplied) strings.
Any string can (usually) be thought of as being in one of these ‘modes’:
pure = what the user actually typed / what you want to see on the page /
what is actually stored in the DB
gpc = incoming GET, POST or COOKIE data
sql = escaped for passing safely to RDBMS via SQL (also, data from DB
queries and file reads if you have magic_quotes_runtime on—which
is rare)
html = safe for html display (htmlentities applied)
Always knowing what mode your string is in—using these methods to
convert between modes—will prevent SQL injection and cross-site scripting.
This class refers to its own namespace (so it can work in PHP 4—there is no
self keyword until PHP 5). Do not change the name of the class w/o changing
all the internal references.
Example usage: a POST value that you want to query with:
$username = Str::gpc2sql($_POST[‘username’]);
*/
Example: Give me everything up to the fourth occurance of ‘/’.
//
// string strtrmvistl( string str, [int maxlen = 64],
// [bool right_justify = false],
// [string delimter = «
\n»])
//
// splits a long string into two chunks (a start and an end chunk)
// of a given maximum length and seperates them by a given delimeter.
// a second chunk can be right-justified within maxlen.
// may be used to ‘spread’ a string over two lines.
//
I really searched for a function that would do this as I’ve seen it in other languages but I couldn’t find it here. This is particularily useful when combined with substr() to take the first part of a string up to a certain point.
?>
Example: Give me everything up to the fourth occurance of ‘/’.
The functions below:
Are correct, but flawed. You’d need to use the === operator instead:
Here’s an easier way to find nth.
I was looking for a function to find the common substring in 2 different strings. I tried both the mb_string_intersect and string_intersect functions listed here but didn’t work for me. I found the algorithm at http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Longest_common_substring#PHP so here I post you the function
Here’s a simpler «simplest» way to toggle through a set of 1..n colors for web backgrounds:
If you want a function to return all text in a string up to the Nth occurrence of a substring, try the below function.
(Pommef provided another sample function for this purpose below, but I believe it is incorrect.)
/*
// prints:
S: d24jkdslgjldk2424jgklsjg24jskgldjk24
1: d
2: d24jkdslgjldk
3: d24jkdslgjldk24
4: d24jkdslgjldk2424jgklsjg
5: d24jkdslgjldk2424jgklsjg24jskgldjk
6: d24jkdslgjldk2424jgklsjg24jskgldjk24
7: d24jkdslgjldk2424jgklsjg24jskgldjk24
*/
?>
Note that this function can be combined with wordwrap() to accomplish a routine but fairly difficult web design goal, namely, limiting inline HTML text to a certain number of lines. wordwrap() can break your string using
, and then you can use this function to only return text up to the N’th
.
You will still have to make a conservative guess of the max number of characters per line with wordwrap(), but you can be more precise than if you were simply truncating a multiple-line string with substr().
= ‘Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin ipsum vel diam. Aliquam pulvinar sagittis felis. Nullam hendrerit semper elit. Donec convallis mollis risus. Cras blandit mollis turpis. Vivamus facilisis, sapien at tincidunt accumsan, arcu dolor suscipit sem, tristique convallis ante ante id diam. Curabitur mollis, lacus vel gravida accumsan, enim quam condimentum est, vitae rutrum neque magna ac enim.’ ;
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin
ipsum vel diam. Aliquam pulvinar sagittis felis. Nullam hendrerit semper elit. Donec convallis
mollis risus. Cras blandit mollis turpis. Vivamus facilisis, sapien at tincidunt accumsan, arcu
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque id massa. Duis sollicitudin
ipsum vel diam. Aliquam pulvinar sagittis felis. Nullam hendrerit semper elit. Donec convallis
mollis risus. Cras blandit mollis turpis. Vivamus facilisis, sapien at tincidunt accumsan, arcu
dolor suscipit sem, tristique convallis ante ante id diam. Curabitur mollis, lacus vel gravida
Функции работы со строками в PHP
Основные в php строковые функции необходимо знать любому веб-программисту, так как строка в РНР — это самый главный тип данных. Длина строки практически ничем не ограничена (разве что размером памяти, занимаемым сценарием и физическим остатком ресурсов компьютера), поэтому в строку можно прочитать файл среднего размера и обработать его. Также к строке можно привести любой объект с помощью функции serialize().
Основные строковые функции PHP
Перечень полезных строковых функций PHP удобнее всего представить в виде таблицы. Функции приводятся без параметров — просто название функции и ее краткое описание. Далее мы рассмотрим некоторые из этих функций отдельно.
| Функция | Описание | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| chop() | Удаляет пробельные символы в конце строки | ||||||||||||||||||
| convert_cyr_string() | Используется для преобразования кодировок русского языка | ||||||||||||||||||
| explode() | Выделяет подстроки (поля) из строки | ||||||||||||||||||
| HtmlSpecialChars() | Заменяет специальные символы их HTML-эквивалентами, например ЭТО МОЖЕТ БЫТЬ ИНТЕРЕСНОЕЩЕ ОТ АВТОРАДля чего нужна техподдержка для сайта?Appbonus : приложение для заработка на АндроидОсобенности создания современных сайтов3 КОММЕНТАРИИКак раз занимаюсь WEB программированием на PHP, не могу сказать,что я всего этого не знал, но все же выделил некоторые моменты для себя,дабы освежить память. Статья годная. Новичкам (!) очень пригодится, т.к. вывод строк — основополагающая функция языка, которой не имеет ни один дугой язык,например Java, а уж тем более HTML. И вообще, приятно читать подобные статьи на этом сайте, всегда узнаешь что-то новенькое Отлично, пока многие функции PHP мне не удается держать в голове. По этому такая табличка пригодится, что бы к ней возвращаться в процессе обучения и практики. Почерпнул даже пару новых для себя функций, например лексикографического сравнения и такую полезную функцию как strpos(). Надо будет оценить их возможности на практике. А вообще PHP богат на строковые функции, по этому есть еще много чего интересного. 🙂 Хорошая статья, выделяет функции, характерные конкретно для php. Программирую совсем на другом языке, но в свое время пришлось столкнуться с этим языком, когда делала одному мальчику курсовую — электронную методичку с достаточно специфическим поиском. Из моего опыта могу сказать, что строковые функции в php дают гораздо больше полезных возможностей и охватывают более разнообразные действия, чем например в том же javaScript. СтрокиЗамечание: Нет никаких проблем, если строка очень велика. Практически не существует ограничений на размер строк, налагаемых PHP, так что нет абсолютно никаких причин беспокоиться об их длине. СинтаксисОдинарные кавычкиЧтобы использовать одинарную кавычку внутри строки, как и во многих других языках, ее необходимо предварить символом обратной косой черты (\), т. е. экранировать ее. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, вам необходимо продублировать ее. Обратите внимание, что если вы попытаетесь экранировать любой другой символ, обратная косая черта также будет напечатана! Так что, как правило, нет необходимости экранировать саму обратную косую черту. Замечание: В PHP 3 в данном случае будет выдано сообщение уровня E_NOTICE. Замечание: В отличие от двух других синтаксисов, переменные и экранирующие последовательности для специальных символов, встречающиеся в строках, заключенных в одинарные кавычки, не обрабатываются. Двойные кавычкиЕсли строка заключена в двойные кавычки («), PHP распознает большее количество управляющих последовательностей для специальных символов: Таблица 11-1. Управляющие последовательности
Повторяем, если вы захотите мнемнонизировать любой другой символ, обратная косая черта также будет напечатана! Но самым важным свойством строк в двойных кавычках является обработка переменных. Смотрите более подробно: обработка строк. HeredocСтроковые функции в PHPДумаю, что данная функция в комментариях не нуждается. На выходе у нас получилась следующая строка: «This is your string«. То есть данная функция заменила строку, заданную первым параметром, на строку, заданную вторым параметром, в строке, заданной третьим параметром, и вернула результат. Таким образом, теперь мы получили номер символа в следующем вхождении. И, напоследок, хочется сказать, что если вхождение не будет найдено, то функция вернёт false. И вот на этом моменте у многих бывают ошибки. Давайте приведу простой пример: И вот теперь Вы увидите, что «строка найдена«. Как видите, оператор эквивалентности может заявить о себе в любую минуту, и всегда нужно о нём помнить, иначе Вам не избежать труднодоступных ошибок. Конечно, это далеко не весь набор строковых функций, которые нам предоставили разработчики PHP, но я, исходя из своей практики, привёл Вам список самых часто используемых строковых функций в PHP. Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)! Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov. Если Вы не хотите пропустить новые материалы на сайте, Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы. Порекомендуйте эту статью друзьям: Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте): Комментарии ( 17 ):Потому что strpos возвращает число, а если ничего не найдено, то false. Не поняла пример со смещением. Как его задать и при чем здесь 4? Смещение на x «переносит» начало строки для функции (но не в реальности), поиск будет начинаться не с 0-го, а с х-го символа Уважаемый Александр,по возможности,добавит P.s. что у вас за интересная ава?) зачем оба флага и оба герба?) Что означает такая конструкция? Метод на константу? Здравствуйте Михаил, разве функция strlen() возвращает кол.символов в строке, в справочнике по php написано что то байтовая функция и возвращает она количество байтов в строке, то есть она считает пробелы за символ. в PHP strlen() возвращает длину строки Функция strlen() возвратит количество байт, а не число символов в строке. P.s.В справочнике написано! ну,тут зависимость идёт В зависимости от кодировки. Но называют именно функцией для расчёта длинны строки. Просто не всегда размер символа соответствует одному байту. И если взять другую кодировку,то да. Но это не ошибка. Хотя подмечено верно Суть не меняется от этого замечания. Да и в любом случае у Михаила просто не написано уточнение о том,что только в случае,если символы весят не более байта Доброго времени! Мне нужна строковая функция чтобы в строке: 1. пробел(ов) заменить одним знаком «-» 2. изменить регистр в нижний, 3. удалить все знаки кроме букв и цифр. 4. и заменить все буквы на английский Если можете помогите кто нибудь пожалуйста. Для добавления комментариев надо войти в систему. Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены. |



