КОнтакты, предложения, отзывы

.rar или .zip
Вложение
Онлайн-чат
На этом сайте, вы найдёте полезную информацию, практические советы в области веб-программирования, веб-дизайна и веб-разработок в целом. Мы с удовольствием поделимся с вами реальными примерами и решениями задач, связанных с jQuery , JavaScript , PHP и MySQL , версткой сайтов , поможем разобраться новичкам с современными технологиями, такими как Ajax , HTML5 , CSS3 и многими другими.

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

Решил провести маленький экскурс по встроенным PHP-функциям для работы со строками в русской или других кодировках. PHP предоставляет нам для работы множество уже готовых функций, так что нам не придётся писать их самостоятельно, изобретая велосипед. Но стандартные функции (strlen, substr и другие) при работе с русскими символами выдают неожиданные результаты. Во избежание ненужной мороки лучше всегда использовать универсальную кодировку UTF-8. Установить внутреннюю кодировку скрипта можно с помощью функции
mb_internal_encoding('utf-8');
mb_check_encoding(строка, кодировка) — Проверяет, что кодировка для строки выбрана верно. Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
mb_detect_encoding — Определение кодировки символов.
mb_convert_encoding(строка, в какую кодировку преобразовывать, исходная кодировка) — Преобразует кодировку символов
Итак, сразу к сути:

Форматирование строк

Усечение строки: функция trim()

удаляет пробелы или указанные символы (по умолчанию удаляютя пробелы) в начале и конце строки и возвращает результирующую строку
$name = trim($_POST['name']);
// удалит символы __
$trim = trim('__POST__', '__');
Применяется в основном для усечения строки, введённой пользователем, вдруг пробел поставил лишний и не заметил, а нам потом сравнивать.. Модификации: ltrim() - удаляет символы слева, rtrim() - справа.

HTML - форматирование: функция nl2br()

Принимает строку и заменяет в ней все символы новой строки HTML-дескриптором
Можно воспользоваться этой функцией при выводе комментариев:
echo nl2br($comment);

wordwrap() — разбивает текст согласно указанным параметрам

Предположим, что у нас есть довольно длинный текст (переменная $txt), который для удобства вывода/чтения можно разбить на части с помощью функции wordwrap (): / разбиваем текст по 30 символов
$rxt = wordwrap($txt, 30, "<br>");
По умолчанию разделитель \n (перенос строки)
Заметьте, что функция wordwrap() распознает слова и не разбивает их. Если же вы хотите вставлять указанный разделитель через указанное количество символов, тогда установите последний необязательный параметр в 1: Если текст будет в кирилице, то есть каждый символ займёт 2 байта, то нужно будет вместо 30 указывать 60, в два раза больший разделитель.

Форматирование строк для хранения

Функции addslashes() и stripslashes()

Применяются для преобразования строки с целью безопасного хранения в БД. addslashes() помещает перед каждым управляющим символом (одинарная и двойная кавычка, символ обратной косой черты \ и символ NULL) символ обратной косой черты \ после чего эти символы рассматриваются не как управляющие, а "как есть". stripslashes() делает всё то же самое с точностью до наоборот: удаляет слеши \. Если на сервере включён режим магических кавычек, слеши будут добавляться автоматически. проверить это можно с помощью функции get_magic_quotes_gpc(), которая вернёт true если это так. в этом случае перед отображением к пользовательским данным нужно применить функцию stripslashes(), иначе слеши будут видны на экране.

htmlspecialchars и htmlentities

htmlspecialchars — Преобразует специальные символы в HTML-сущности htmlentities — Преобразует все возможные символы в соответствующие HTML-сущности, принимает дополнительные параметры - флаги и кодировку:
htmlentities($string, ENT_QUOTES, "UTF-8");
htmlspecialchars_decode — Преобразует специальные HTML-сущности обратно в соответствующие символы. html_entity_decode — Преобразует все HTML-сущности в соответствующие символы, обратная функции htmlentities().

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

Эта функция пытается возвратить строку, из которой удалены все NULL-байты, HTML и PHP теги. Вторым параметром можно указать, какие теги удалять не нужно:
$striptags = strip_tags($str='<a>Ссылка на...</a>');

Хешированее строки - функция md5()

Возвращает хэш в виде 32-символьного шестнадцатеричного числа. Применяется для шифрования паролей и других важных данных. Хеширование необратимо. Существуют алгоритмы шифрования sha1 и более надёжный crypt. Можно для пущей безопасности добавлять к хешируемому паролю "соль", т.е. какие-нибудь произвольные символы и строки.

Обьединение и разбиение строк

explode(), implode() и join()

Функцие explode() разбивает строку на части по указанному разделителюю Части строки возвращаются в виде массива. Можно ограничить количество частей, передав в функцию третий (необязательный) параметр.
$email = 'ilikeitall@mail.ru';
$email_array = explode('@', $email); 
Вернёт $email_array[0]-> 'ilikeitall' и $email_array[1]-> 'mail.ru' (Идентичные) функции implode() и join() наоборот, обьединяют строки.
$new_email = implode('@', $email_array)

Альтернатива explode(): strtok()

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

Доступ к подстроке: функция mb_substr()

позволяет получить доступ к подстроке между заданной начальной и конечной позицией (в числовом виде). Синтаксис:
mb_substr(строка, начало, длина, кодировка);
Если третий параметр положительный, возвращает строку с начальной позиции указанной длины. Если третий параметр не указан, вернёт строку до конца. В случае задания отрицательного третьего параметра:
$text = 'И днём и ночью код учёный';
 $podtext = mb_substr($text, 2, -11, 'UTF-8');
  echo $podtext;
Будет получена строка, начиная с третьей позиции с начала и до 11 символа с конца строки, т.е. выведет "днём и ночью". Если кодировка не указана, используется внутренняя кодировка скрипта, справедливо для всех подобных функций с приставкой mb_

Упорядочение строк

strcmp()

strcmp()('string comparing' - 'сравнение строк'):
strcmp($str1, $str2) 
принимает две строки, которые и сравнивает. Если они равны, возвращает 0. Если в лексикографическом порядке строка $str1 больше, вёрнёт 1, если меньше -1. strcasecmp() аналогична strcmp, но не чувствительна к регистру.

mb_strlen() - проверка длины строки

mb_strlen('Всё ходит по цепи кругом', 'utf-8'); 

Поиск подстрок в строках

mb_strstr()

Находит первое вхождение подстроки в строке Если установлено TRUE, возвращается часть от начала до первого вхождения (исключая его). Если установлено FALSE, возвращается часть от первого вхождения до конца (включая вхождение).
// Вернёт 'песнь заводит':
echo mb_strstr('Идёт направо - песнь заводит', 'песнь', false, 'utf-8');
// Вернёт 'Идёт направо -':
echo mb_strstr('Идёт направо - песнь заводит', 'песнь', true, 'utf-8');
mb_stristr() - аналогична mb_strstr, но не учитывает регистр
mb_strchr() — является псевдонимом ДЛЯ функции mb_strstr();
mb_strrchr() — ищет последнее вхождение, mb_strrichr () - то же только без учёта регистра.

Повторения строк

Функция str_repeat() возвращает n повторов указанной строки:
Например:
echo str_repeat("1", 3);// выведет 111

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

mb_strpos() и mb_strrpos()

Действуют аналогично mb_strstr() и отличаются от неё только тем, что возвращают числовую позицию подстроки в строке. Рекомендуется пользоваться вместо mb_strstr() по причине её высокой скорости. mb_strpos() - возвращает целочисленное значение первого вхождения, mb_strrpos() - последнего.
// вернёт 9:
echo mb_strpos('Налево - сказку говорит', 'сказку', 0, 'UTF-8');
// также вернёт 9:
echo mb_strrpos('Налево - сказку говорит', 'сказку', 'UTF-8');
mb_stripos() и mb_strripos() - нечувствительные к регистру аналоги mb_strpos() и mb_strrpos.

mb_strtolower — Приведение строки к нижнему регистру

mb_strtoupper — Приведение строки к верхнему регистру

Замена подстрок

Функции str_replace и substr_replace

str_replace() даёт возможность заменять подстроки в строке. Её синтаксис:

str_replace (поиск, замена, строка, число замен);

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

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

substr_replace() заменяет часть строки, начинающуюся с символа с порядковым номером начало и (необязательной) длиной, строкой замена и возвращает результат. str_ireplace и substr_ireplace - нечувствительные к рагистру аналоги str_replace и substr_replace.

Вывод строк на экран

Мощная функция printf()

Скорее всего, вам уже встречались функции print и echo, которые использовались для простого вывода текста в браузер. Но существует намного более мощная функция printf, управляющая форматом выводимых данных путем вставки в строку специальных форматирующих символов. Функция printf ожидает, что для каждого форматирующего символа будет предоставлен аргумент, который будет отображаться с использованием заданного формата. Например, в следующем фрагменте применяются спецификаторы преобразования %s и %d, чтобы значение юзер отображалось в виде строки, а 3 отображалось в виде десятичного числа:
printf("%s, вашей корзине находится %d покупки", 'юзер', 3);
Есть много спецификаторов для данной функции, наиболее часто используется %s.

Функции регулярных выражений

Функции preg_match() и preg_match_all()

Функция preg_match — Выполняет проверку на соответствие регулярному выражению, и возвращает 1, если совпадения найдены. Если совпадения не найдены или возникла ошибка, возвращается FALSE. Используйте оператор === для проверки значения, возвращаемого этой функцией. В общем виде она выглядит следующим образом:
preg_match(поиск, строка[, массив $regs]);
preg_match_all(поиск, строка[, массив $regs]);
У функций три параметра, первые два из которых являются обязательными:
У preg_match_all третий параметр стал необязательным только в php5.4
•I - регулярное выражение;
•II — строка, в которой происходит поиск;
•III - переменная, в которую будет помещен массив найденных значений.
Для этой функции будет использована внутренняя кодировка или кодировка, установленная функцией mb_regex_encoding().
mb_regex_encoding('UTF-8');

mb_ereg и mb_ereg_match()

Ищет совпадение с регулярным выражением для многобайтовой строки.Возвращает TRUE, если string совпадает с регулярным выражением, FALSE - в противном случае. В случае использования этих функций слэши в рег.возражении ставить не нужно.Пример использования - проверка емэйла:
if(!mb_ereg_match('^(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})$', 'ilikeit@mail.ru')){
  echo 'No';}
else echo 'Так точно!';

Функция mb_ereg_replace()

Эта функция похожа на функцию preg_repiace() тем, что ищет в строке регулярное выражение и заменяет его новым значением с поддержкой многобайтовых символов, возвращает результирующую строку в случае успеха, или FALSE в случае ошибки.
mb_ereg_replace(рег.выражение, новое значение, строка для поиска);
Функция mb_eregi_replace() идентична mb_ereg_replace(), НО игнорирует регистр. Параметры у обеих функций одинаковы. Слэши для рег.выражения не нужны

Функция mb_split()

Функция mb_split() разбивает строку в соответствии с регулярным выражением и возвращает массив строк. В общем виде она выглядит так:
mb_split(строка pattern, строка string[, число limit]); 
Посмотрим на параметры функции:
¼ pattern — регулярное выражение;
½ string — строка, в которой происходит поиск;
¾ limit — ограничение количества найденных значений.
Слэши для рег.выражения не нужны Не забываем устанавливать кодировку, а то не сработает: mb_regex_encoding('UTF-8'); У этой функции нет аналога для поиска без учёта регистра символов
Функция spliti() идентична split(), которая в точности похожа на mb_split() без поддержки многобайтовых символов, но нечувствительна к регистру букв во время поиска регулярного выражения. Более подробно о регулярных выражениях и их использовании смотрите здесь.
2015.05.16 206

99% ошибок компьютера сидит в полуметре от монитора.
Войдите или Зарегистрируйтесь чтобы оставить комментарий

Комментарии


    Яндекс.Метрика Яндекс.Метрика