Заменить пробелы одним пробелом php

замена пробелов

Замена пробелов на «_» при загрузке файла на сервер
Не подскажите, почему файловые хостинги проделывают данную операцию? Думал, что php выбивает.

Замена пробелов(%20) на _
скрипт загрузки файла <?php $error = ""; $msg = ""; $fileElementName = ‘fileToUpload’; $i =.

Замена пробелов в строке
На вход поступает строка. В случае, если строка имеет пробел, то заменяем его на символ %. В.

Замена пробелов на звёздочки
Подскажите пожалуйста, как сделать чтоб все пробелы в тексте заменились на звёздочки? Задача звучит.

1 2 3 4 5 6 7 8 9 10 11 12 13 14
function replace ($string) { $string = ereg_replace(","<",$string); $string = ereg_replace('\\\"',""",$string); $string = ereg_replace('\\"',""",$string); $string = ereg_replace("!","!",$string); $string = ereg_replace("\r\n","
"
,$string); $string = ereg_replace("\n","
"
,$string); $string = ereg_replace("%","%",$string); $string = ereg_replace("^ +","",$string); $string = ereg_replace(" +$","",$string); $string = ereg_replace(" +"," ",$string); return $string; }
$string = str_replace(' ', ' ', $string);
$string = preg_replace("~(\r\n|\n|\r)~", '
'
, $string);

ЦитатаСообщение от Wbgury Посмотреть сообщение

Замена пробелов на подчеркивание _
есть исходный текст: APPLE IPHONE 5 WHITE Надо получить: APPLE__IPHONE_5_WHITE

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

Скрипт: Замена пробелов
Пишу простенький скрипт. Замена пробелов в именах файлов на символ подчёркивания.Вот сам скрипт.

Замена пробелов на знак ;
Задача такая, есть текстовый файл в котором инфа хранится в след. формате: 45024015 Юсупов.

Источник

Удаление лишних пробелов в PHP.

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

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

Стандартные функция trim( string $str [, string $character_mask = » \t\n\r\0\x0B» ]) удаляет все возможные пробелы в начале или в конце строки, так же эта функция может удалять те символы, которые вам не нужны, например точку или запятую:

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

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

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

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

$str = str_replace(» «, » «, $str); while( strpos($str,» «)!==false)

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

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

$str = str_replace('&', '&', $str); $str = str_replace(' ', ' ', $str);

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

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

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

echo bin2hex($str); echo substr_count($str, "\xc2\xa0");

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

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

echo preg_replace('!\s++!u', ' ', $str);

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

$text = hex2bin(str_replace('c2a0', '20', bin2hex($str))); while( strpos($text,' ')!==false) < $text = str_replace(" ", " ", $text); >$text = trim($text);

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

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

Источник

Как правильно заменить несколько пробелов на один пробел в PHP?

Я просматривал ответы SO и обнаружил, что решение, которое большинство дало для замены нескольких пробелов, следующее:

$new_str = preg_replace("/\s+/", " ", $str); 

Но во многих случаях символы пробела включают символы UTF, которые включают в себя фид строки, фид формы, возврат каретки, неразрывное пространство и т.д. Эта вики описывает, что UTF определяет двадцать пять символов, определенных как пробельные символы. Итак, как мы можем заменить все эти символы, используя регулярные выражения?

3 ответа

При передаче модификатора u \s становится доступным для Unicode. Итак, простым решением является использование

$new_str = preg_replace("/\s+/u", " ", $str); ^^ 

Да, это становится известно, но это не заменяет пробелы как неразрывные пробелы. Нам нужно указать эти символы конкретно. Например, попробуйте свое решение с помощью этой строки: $str = «Hello there».str_repeat(json_decode(‘»\u00A0″‘),10).»Bob!»; Строка имеет 10 пробелов, которые являются неразрывными и представлены utf-кодом 00A0 . Вы можете попробовать повторить эту строку, чтобы увидеть, что она делает.

Неразрывный пробел в моем образце текста. Она заменяется. А вот демонстрация с примером строки выше. Также оставляя только 1 место внутри.

Я пробовал этот код на основе вашего, но я не получаю результат. Я что-то пропустил? $utf = «Hello there».str_repeat(json_decode(‘»\u00A0″‘),10).»Bob!»; $new_str = preg_replace(«/\s+/u», » «, $utf); echo $new_str;

Снова, посмотрите ideone.com/I8qnpV . Вы должны проверить, правильно ли настроена ваша среда для работы с UTF.

Хорошо, это странно. Знаете ли вы, что может быть не так с моей средой? Решение, которое я опубликовал, работает в моей нынешней среде. Он обнаруживает символы UTF. Но ваше решение не дает того же результата. Любая идея, где я мог бы прочитать больше об этом?

Образец, который соответствует все пробелы Unicode, [\pZ\pC] . Ниже приведена unit test, чтобы доказать это.

Если вы анализируете ввод пользователя в UTF-8 и должны его нормализовать, важно, чтобы ваш список соответствовал этому списку. Поэтому, чтобы ответить на ваш вопрос:

$new_str = preg_replace(«/[\pZ\pC]+/u», » «, $str);

Первое, что нужно сделать, это прочитать this объяснение того, как unicode можно обрабатывать в regex. Приступая конкретно к PHP, нам нужно прежде всего включить модификатор PCRE ‘u’, чтобы движок распознавал символы UTF. Таким образом, это будет:

Следующее, что нужно отметить, что в символах юникода PHP есть шаблон \x , где 00A0 — шестнадцатеричное представление для non-breaking space . Поэтому, если мы хотим заменить последовательные неразрывные пробелы одним пространством, мы имели бы:

$pattern = "/\x+/u"; $new_str = preg_replace($pattern," ",$str); 

И если бы мы включили другие типы пространств, упомянутые в wiki, например:

Наш шаблон выглядит следующим образом:

Но это действительно не очень хорошо, так как механизм регулярных выражений будет навсегда найти все комбинации этих символов. Это связано с тем, что символы включены в квадратные скобки [], и у нас есть + для одного или нескольких вхождений.

Лучшим способом получить более быстрые результаты является замена всех вхождений каждого из этих символов на нормальное пространство в первую очередь. А затем заменив несколько пробелов на одно нормальное пространство. Мы удаляем [] + и вместо этого разделяем символы с помощью оператора или | :

$pattern = "/\x|\x|\x|\x/u"; $new_str = preg_replace($pattern," ",$str); // we have one-to-one replacement of character by a normal space, so 5 unicode chars give 5 normal spaces $final_str = preg_replace("/\s+/", " ", $new_str); // multiple normal spaces now become single normal space 

Ещё вопросы

  • 1 VideoView воспроизводится нормально, но не отображается при переключении полноэкранных представлений
  • 0 Переход через неограниченные вложенные массивы
  • 1 Код Python 3.5 / 3.6 в зависимости от порядка вставки dict
  • 1 JavaScript Судоку решатель. Откуда взялся предыдущий номер?
  • 1 Как объединить 2 блока кода JavaScript
  • 0 ASN1C компиляция
  • 1 Создать один CSV из двух файлов CSV со значениями X и Y в Python
  • 0 Как использовать дополнительные значения в маршрутах Laravel?
  • 0 Программа C ++ не будет собираться. Получение неопределенных символов для ошибки архитектуры
  • 1 Скрепка с ActionCable
  • 1 установка общего стиля кнопок для старых версий ОС
  • 0 Как добавить нового пользователя в Kamailio, используя PHP shell_exec?
  • 0 сообщение об успехе или неудаче при отправке формы
  • 1 Утечка памяти при попытке сохранить ссылку на фрагментное представление за пределы onDestoryView ()
  • 0 Apache скинул 404 для файла в папке var / www
  • 0 кодирование значения объекта в функции ng-click
  • 1 Почему хорошо очищать SecurityContextHolder после завершения веб-запроса?
  • 1 RxJava doOnError против onError
  • 1 Цикл массива очередей
  • 0 центрированный, но также фиксированный
  • 1 Сопоставить элементы в ListView от одного адаптера со значениями из другого ListView и адаптера
  • 1 Событие щелчка LinkButton не срабатывает, если какое-либо действие, выполненное с клавишей ENTER, вместо нажатия кнопки
  • 1 Попробуйте и поймать блоки: будь то в самом классе или когда я вызываю метод вне класса
  • 0 HTML таблицы и столбца
  • 1 Обращение к члену в качестве переменной в Discord.py
  • 0 Как создать макет сайта с полным окном просмотра
  • 0 Как добавить текст и CSS с помощью jquery
  • 1 Используйте разные поля для проверки в ASP.NET Identity
  • 0 У меня есть ошибка с использованием этого-> в C ++
  • 1 Java помощь относительно циклов
  • 0 JQuery флажок проблемы
  • 0 Как привязать сгенерированные d3 HTML-элементы к области видимости?
  • 0 Как потушить изображения и текст (здесь текст связан с конкретным изображением) за один раз, используя плагин цикла jQuery?
  • 1 Есть ли у RESTEasy какой-нибудь помощник для создания конфигурации приложения?
  • 1 Установка яркости фильтра родителя без влияния на дочерний элемент
  • 0 Данные таблицы HTML смещаются в другие столбцы
  • 0 PHP массив считывает последовательность
  • 1 Отрегулируйте элемент в панели навигации слева, если нет значка
  • 1 как подстроку строки при поиске определенного имени?
  • 1 Модульная экспонента в Java (алгоритм дает неправильный ответ)
  • 1 Как преобразовать список из списка слов в виде строк?
  • 0 Angular — функция в зависимости или зависимость в параметрах функции?
  • 0 MySQL Connection в веб-сервере Amazon
  • 1 Правильное отображение тенденций в matplotlib python, таких как электронные таблицы
  • 1 Восстанавливаемое веб-задание Azure (не удалять из очереди)
  • 0 Кнопка для удаления записи в таблице
  • 1 Python конвертирование из c # Расчет CRC8 из кадра 4/5 байт
  • 0 Почему MySQL выполняет сортировку файлов по этому запросу?
  • 0 Как настроить позиции с использованием HTML в DW?
  • 1 Руководство по GStreamer для Android не удалось построить

Источник

Заменить несколько пробелов в строке одним пробелом

У меня есть файл с несколькими пробелами среди слов в какой-то момент. Мне нужно очистить файл и заменить существующие многостраничные последовательности только одним пробелом. Я написал следующее утверждение, которое не работает вообще, и, похоже, я делаю большую ошибку.

Мой файл очень прост. Вот часть этого:

Hjhajhashsh dwddd dddd sss ddd wdd ddcdsefe xsddd scdc yyy5ty ewewdwdewde wwwe ddr3r dce eggrg vgrg fbjb nnn bh jfvddffv mnmb weer ffer3ef f4r4 34t4 rt4t4t 4t4t4t4t ffrr rrr ww w w ee3e iioi hj hmm mmmmm mmjm lk ;’’ kjmm . jjj hhh lmmmlm m mmmm lklmm jlmm m 

4 ответа

Ваше регулярное выражение заменяет любое количество пробелов (включая ноль) пробелом. Вы должны заменить только два или более (в конце концов, замена одного пробела на себя не имеет смысла):

Что я обычно делаю, чтобы очистить несколько мест:

  1. строки с несколькими пробелами редки
  2. два пробела гораздо чаще, чем три или более
  3. preg_replace дорого с точки зрения процессора
  4. при возможности следует избегать копирования символов в новую строку

Конечно, если условие № 1 не выполняется, такой подход не имеет смысла, но обычно это так.

Если выполнено № 1, а другие нет (это может зависеть от данных, программного обеспечения (версия PHP) или даже оборудования), то следующее может быть быстрее:

В любом случае, если несколько пробелов появляются только, скажем, в 2% ваших строк, важна профилактическая проверка с помощью strpos и вы, вероятно, не очень заботитесь об оптимизации оставшихся 2% случаев.

Источник

Читайте также:  Четность нечетность числа python
Оцените статью