Php убрать двойные пробелы

Php убрать двойные пробелы

Встречаются ситуации, что нужно избавиться от двойных, тройных и т.д. пробелов. Как это сделать!?

На самом деле нужно регулярное выражение? Которое избавит нас от двойных и более пробелов..

Как ни странно, но некоторые функции работают то так. То сяк и в том числе и удаление двойных и более пробелов!

На данном сервере почему то без букв «ui» после регулярного выражения никак не хотят работать, и вот нашел несколько вариантов рабочих, которые срабатывают у меня на сервере..

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

Текст который будет с пробелами :

Здесь текст и много много пробелов , и срочно нужно избавиться от этих нехороших пробелов — двойных, тройных и табов и др

Вараинт №1 удаления двойных пробелов в тексте

$peremennaya_1 = preg_replace(‘/s+/ui’, ‘ ‘, $peremennaya);

Здесь текст и много много пробелов , и срочно нужно избавиться от этих нехороших пробелов — двойных, тройных и табов и др .

Вараинт №2 удаления двойных пробелов в тексте

$peremennaya_2 = preg_replace(‘/[s]<2,>/ui’, ‘ ‘, $peremennaya);

Здесь текст и много много пробелов , и срочно нужно избавиться от этих нехороших пробелов — двойных, тройных и табов и др .

Вараинт №3 удаления двойных пробелов в тексте

$peremennaya_3 = preg_replace(‘/s/ui’, ‘ ‘, $peremennaya);

Здесь текст и много много пробелов , и срочно нужно избавиться от этих нехороших пробелов — двойных, тройных и табов и др

Обрабатывая информацию, собирая ее из разных источников, например с сайта поставщика, мы часто сталкиваемся с тем, что нам надо ее привести в достойный вид, удалив лишние пробелы.

Удаление пробелов в начале или конце строки.

Стандартные функция trim( string $str [, string $character_mask = "

Читайте также:  Как запустить диспетчер задач на удаленном компьютере

x0B" ]) удаляет все возможные пробелы в начале или в конце строки, так же эта функция может удалять те символы, которые вам не нужны, например точку или запятую:

Так же есть 2 функции, ltrim и rtrim, которые работают так же как и trim, за исключением того , что ltrim удаляет символы в начале строки, а rtrim в конце.

Удаление лишних пробелов в самом тексте.

Иногда нужно удалить лишние пробелы, а иногда и табы, в самом тексте, например: «Купив телефон сегодня вы получите самый лучший подарок». В этом тексте после каждого слова стоит более 1 пробела, Попробуем заменить лишние через регулярное выражение:

В данном случае s говорит что надо заменить все пробелы, а + включая табы на 1 пробел. Если вы считаете, что регулярные выражения зло, то можно использовать:

Удаление «не удаляемых» пробелов.

Возможно вы столкнулись с такой проблемой, что ни одно из средств перечисленных выше не удаляет пробелы. Для начала рассмотрите внимательно текст, желательно в исходном коде, потому что текст « Купив телефон сегодня вы получите самый лучший подарок» может оказаться таким: « Купив телефон сегодня вы получите самый лучший подарок». Для начала надо заменить   и просто на пробелы:

А потом, применить один из способов, о котором я писал выше.

Хорошо, это мы сделали, но у нас остались лишние пробелы, которые не удаляются стандартными методами. Вероятнее всего это NO-BREAK SPACE, в таблице utf-8 символов он идет как c2 a0.

Для начала попробуйте перевести ваш текст в HEX:

и поищите там: c2a0, как видно на скриншоте, у меня аж 2 таких пробела

Удаление через регулярное выражение:

Удаление без регулярного выражения:

Читайте также:  Игра штурм 2 в тылу врага начало

переводим наш текс в HEX, заменяем NO-BREAK SPACE на обычный пробел, переводим обратно в обычный текст, после этого можно сделать замену пробелов и чистку.

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

Если у вас возникла необходимость удалить двойные пробелы или заменить двойные пробелы одинарными используя PHP, то можно воспользоваться следующей текстовой функцией:

  • mixed preg_replace(mixed $pattern, mixed $replacement, mixed $subject [, int &$count])

Эта функция выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement.

Ссылка на основную публикацию
Adblock detector