Php убрать повторяющиеся пробелы

Удалить повторяющиеся пробелы из строки php. Как из строк убрать пробелы на PHP? Пример поиска и замены пробелов

Добрый вечер, недавно мы с Вами немного затрагивали тему паролей, и их безопасного хранения, а именно изучали функцию хеширования. Сегодня мы немного продолжим тему, связанную с паролями, и их хранением, и изучим функции, при помощи которых можно удалять пробелы из начала и конца строки . Причем здесь пароли и удаление пробелов из строки , скажите Вы? Во первых, данная функция, конечно же, не относится конкретно к паролям, а лишь работает со строками, а про пароли я сказал, лишь в качестве ее применения. Поэтому Вы можете ее использовать где угодно, и когда Вам угодно, исходя из вашей ситуации.

Для чего нужно обрезать пробелы в начале строки и в конце ? Если Вы указываете пароль на сайте при регистрации и каким-то образом случайно нажмете пробел и не заметите этого, то ваш пароль будет состоять, например не из четырех символов, а из пяти, включая ваш пробел. И вы не будете понимать, почему пароль не подходит, ведь хэш этой строки будет отличаться. Поэтому я всегда рекомендую обрезать пробелы в строке, для того чтобы не возникало таких нюансов. Теперь мы с Вами перейдем к рассмотрению примера на практике.

Читайте также:  Javascript событие прокрутка страницы

» 1234 » ;
$password = md5(trim($string_pass )) ;
$password2 = md5($string_pass ) ;
echo $password;
echo «
» ;
echo $password2;
?>

Создаем переменную, которая будет нашим паролем, и специально указываем по пробелу в начале и в конце строки. Далее создаем переменную, в которой уже будет храниться хешированный пароль, и пропускаем строку через функцию trim , которая сначала удалит все ненужные пробелы, и только потом мы получим хешированный пароль. А во второй переменной мы не используем функцию удаления пробелов и сразу хешируем строку. После чего мы выводим два результата на экран браузера и видим, что они полностью отличаются, хотя мы оба раза использовали одинаковую строку. Однако из-за пробелов результат полностью отличается, поэтому с этим делом нужно быть предельно внимательным. И последнее, что стоило бы Вам рассказать. Существуют еще две функции, которые удаляют пробелы в начале строки, или в конце строки, и называются они ltrim и rtrim соответственно. Поэтому если Вам необходимо удалить пробелы с какой-либо из сторон используйте их. А на этом я завершаю данную статью и желаю Вам успехов во всех ваших работах.

В любом языке при работе со строками является типичной задача удаления пробелов как в начале, так и в конце строки. В PHP для этих целей существует три функции: ltrim(), rtrim(), trim(). Функция ltrim() удаляет пропуски в начале строки, rtrim() — в конце строки, trim() — как в начале, так и в конце. Что интересно: эти функции, помимо пробелов, удаляют также управляющие последовательности перехода на новую строку, возврата каретки, табуляции и ноль-символа.

$example = » \tHi everybody\n»; var_dump(trim($example)); var_dump(rtrim($example)); var_dump(ltrim($example));

String «Hi everybody» (length=12) string » Hi everybody» (length=14) string «Hi everybody » (length=13)

Читайте также:  Полосы прокрутки

Что самое интересное, вышеописанные функции также могут удалять символы, заданные пользователем. Для этого вышеописанным функциям нужно передать вторым аргументом строку, содержащую удаляемые символы. Например:

$example = » yHi everybody\n»; var_dump(trim($example, » y»)); var_dump(rtrim($example, » y\n»)); var_dump(ltrim($example, » yH»));

String «Hi everybody » (length=13) string » yHi everybod» (length=13) string «i everybody » (length=12)

Работая с текстом, часто приходится его форматировать. Это необходимо для корректного вывода на экран и легкой читаемости. Это нужно, если пользователь вписывает некоторую информацию и допускает ошибки: вместо одного пробела указывает два, в начале ставит табуляцию. Есть несколько способов убрать пробелы в PHP.

Trim()

Функция Trim ищет лишние знаки в начале строки или в конце. Это:

Записывается в таком виде:

String trim (string $str [, string $character_mask = » \t\n\r\0\x0B» ])

$str — это обрабатываемая строка, а $character_mask — лишние символы. $character_mask является необязательным атрибутом.

Preg_replace

Функция для поиска и замены символов по регулярному выражению.

Mixed preg_replace (mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]])

  1. $pattern — искомый шаблон.
  2. $replacement — символы для замены.
  3. $subject — обрабатываемый объект.
  4. $limit — количество производимых замен.

$pattern и $replacement могут быть массивами. В таком случае замена производится в соответствии с индексами.

Str_replace()

Убрать пробелы из строки в PHP можно методом str_replace(). Он заменяет все вхождения строки поиска на строку замены.

Mixed str_replace (mixed $search , mixed $replace , mixed $subject [, int &$count ])

Используется в качестве упрощенного метода preg_replace().

  1. $search — значение, которое необходимо найти.
  2. $replace — заменяемая строка.
  3. $subject — объект, в котором производится поиск и замена.
  4. $count устанавливает количество замен.

Пример поиска и замены пробелов

Эти функции применяются в большинстве ситуаций, даже в более сложных.

Например, пользователь ввел некоторые данные, которые позже будут напечатаны на экране. Для улучшения читабельности и восприятия текста в целом эту информацию нужно обработать — убрать повторяющиеся пробелы, заменить их на одинарные.

$text1 = «Длинный объемный текст с лишние пробелами»;

В данном случае видно, что между словами находится по два и три пробела. Порядок действий, как убрать пробелы в PHP, следующий.

1. Для начала нужно превратить строку в массив строк с помощью функции.

В качестве разделителя используется один пробел. Таким образом, части тела, которые не являются отдельными элементами массива, будут содержать на один пробел меньше.

2. В результате получается такой массив строк:

$array = [«Длинный “, “объемный”, “текст”, “с “, “лишние пробелами»]​

3. Каждый элемент обрабатывается функцией:

Для поиска одного и большего количества пробелов используется регулярное выражение /\s+/. Все найденные совпадения заменяются строкой ‘ ‘. Поиск осуществляется в переменной $text1.

4. В результате получаем строку с правильным количеством пробелов, которая легко воспринимается пользователем.

  • Обзор и тестирование корпуса Fractal Design Define R5: новый уровень Спецификации и краткий обзор охлажденияОбзор и тестирование корпуса Fractal Design Define R5: новый уровень Спецификации и краткий обзор охлаждения
  • Проверка правописания (орфографии и грамматики) в WordПроверка правописания (орфографии и грамматики) в Word
  • Как искать в яндексе по картинке и для чего это может пригодитсяКак искать в яндексе по картинке и для чего это может пригодится
  • Как сделать грамотную внутреннюю перелинковку Ручная перелинковкаКак сделать грамотную внутреннюю перелинковку Ручная перелинковка

Источник

Удаление регулярными выражениями в PHP

Примеры регулярных выражений для удаления данных из текста.

Текст и символы

Удалить все пробелы

$text = 'a b c d e'; $text = mb_ereg_replace('[\s]', '', $text); echo $text; // abcde

Удалить двойные пробелы

$text = 'a b c d e'; $text = mb_ereg_replace('[ ]+', ' ', $text); echo $text; // a b c d e

Удалить лишние пробелы перед знаками препинания

$text = 'Многие ! известные ? личности , и по сей день .'; echo preg_replace("/\s+([\.|,|!|\?]+)/", '\\1',$text);
Многие! известные? личности, и по сей день.

Оставить в тексте только буквы, цифры и пробел

$text = 'Многие известные. личности, по: сей день.'; echo mb_eregi_replace("[^a-zа-яё0-9 ]", '', $text);
Многие известные личности по сей день

Удалить цифры

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789'; echo mb_eregi_replace('8', '', $text);
абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz

Удалить латинские буквы

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789'; echo mb_eregi_replace('[a-z]', '', $text);
абвгдеёжзийклмнопрстуфхцчшщъыьэюя 0123456789

Удалить русские буквы

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789'; echo mb_eregi_replace('[а-яё]', '', $text);

Удалить все буквы и цифры

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789 . '; echo mb_eregi_replace('[\w]', '', $text);

Удалить все кроме цифр и пробелов

$text = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя abcdefghijklmnopqrstuvwxyz 0123456789 . '; echo mb_eregi_replace('[^0-9 ]', '', $text);

Удалить табуляцию

Удалить переносы строк

echo preg_replace("/[\r\n]/", '', $text);

Удалить определенное количество символов

Примеры удаляют девять символов в начале и конце текста.

// Удаление с начала $text = mb_eregi_replace("^.(.*)$", '\\1', $text); echo $text; // Удаление с конца $text = mb_eregi_replace("(.*)[^.]$", '\\1', $text); echo $text;

Удалить текст до определенного символа

Данные регулярные выражения удаляют все что находится до первого искомого символа, а также пробел который идет за ним.

$text = 'Многие известные. личности, по: сей - день.'; // Удалить до пробела echo preg_replace("/^(.*?)(\s)(.*?)$/", '\\3', $text); // Удалить до "." echo preg_replace("/^(.*?)(\.\s)(.*?)$/", '\\3', $text); // Удалить до "," echo preg_replace("/^(.*?)(,\s)(.*?)$/", '\\3', $text); // Удалить до ":" echo preg_replace("/^(.*?)(:\s)(.*?)$/", '\\3', $text); // Удалить до "-" echo preg_replace("/^(.*?)(-\s)(.*?)$/", '\\3', $text);
известные. личности, по: сей - день. личности, по: сей - день. по: сей - день. сей - день. день.

Удалить текст после символа

$text = 'Многие известные. личности, по: сей - день.'; // Удалить после пробела echo preg_replace("/^(.+?)\s.+$/", '\\1', $text); // Удалить после «.» echo preg_replace("/^(.+?)\..+$/", '\\1', $text); // Удалить после «,» echo preg_replace("/^(.+?),.+$/", '\\1', $text); // Удалить после «:» echo preg_replace("/^(.+?):.+$/", '\\1', $text); // Удалить после «-» echo preg_replace("/^(.+?)-.+$/", '\\1', $text);
Многие Многие известные Многие известные. личности Многие известные. личности, по Многие известные. личности, по: сей

Удалить скобки с их содержимым

$text = '(Casio G-SHOCK) [GW-9200-1ER] '; // Удаление (. ) echo preg_replace("/(.*?)\(.*?\)\s?(.*?)/is", '\\1\\3', $text); // Удаление [. ] echo preg_replace("/(.*?)\[.*?\]\s?(.*?)/is", '\\1\\3', $text); // Удаление echo preg_replace("/(.*?)\<.*?\>\s?(.*?)/is", '\\1\\3', $text); // Удаление [. ] echo preg_replace("/(.*?)<.*?>\s?(.*?)/is", '\\1\\3', $text);

Комментарии

Удалить комментарии из HTML

$text = '

Текст текст

'; echo preg_replace('/\s?\s?/', ' ', $text);

Удаление многострочных комментариев «/* . */»

$text = " /** * Описание функции и тд * @param name * @param defaultValue * @returns */ document.write(' '); "; echo preg_replace("/\/\*(.*?)\*\//sm", '', $text);

Удалить комментарии «//» и «#»

$text = " // По возрастанию: ksort($array); # По убыванию: krsort($array);"; $res = preg_replace("/\/\/.*\n/", '', $text); $res = preg_replace("/#.*\n/", '', $res); echo $res;

Комментарии SQL « —. »

$text = " SELECT * FROM `articles` WHERE `name` LIKE '%KEY%' -- OR `title` LIKE '%KEY%' OR `text` LIKE '%KEY%'"; echo preg_replace("/\s--.*\n/", '', $text);
SELECT * FROM `articles` WHERE `name` LIKE '%KEY%' OR `text` LIKE '%KEY%'

Нумерация строк

$text = ' 1 text text text. 2 text text text. 3 text text text. 1. text text text. 2. text text text. 3. text text text. 1) text text text. 2) text text text. 3) text text text.'; echo preg_replace('/(\d)+(\.|\)|\s)+([\s]?)+(.*)/', '\\4', $text);
text text text. text text text. text text text. text text text. text text text. text text text. text text text. text text text. text text text.

Хештеги

$text = 'broken beat, nu jazz, downtempo #nujazz, #downtempo, #intelligent'; echo preg_replace('/#([\S]+)/', '', $text);
broken beat, nu jazz, downtempo 

Источник

Оцените статью