Я получаю строку из запроса к базе данных, затем удаляю все HTML-теги, символы возврата каретки и символы новой строки, прежде чем помещать ее в файл CSV. Единственное, я не могу найти способ удалить лишнее пустое пространство между строками.
Как лучше всего удалить внутренние символы пробела?
Ответы:
Не уверен, что именно вы хотите, но есть две ситуации:
Если вы просто имеем дело с избытком whitespaceна начало или конец строки , вы можете использовать
trim()
,ltrim()
илиrtrim()
удалить его.Если вы имеете дело с лишними пробелами в строке, рассмотрите
preg_replace
несколько вариантов whitespaces" "*
с одним whitespace" "
.Пример:
источник
$foo = preg_replace( '/\s+/', ' ', $foo );
воли убивает эффектыnl2br()
Или замените на подчеркивание, & nbsp; и т. д.
источник
Hi Earth
с 4 - пространства между ними будет:HiEarth
. Это не решает мою проблему, связанную с вопросом.$str = trim(preg_replace('/\s+/',' ', $str));
Приведенная выше строка кода удалит лишние пробелы, а также начальные и конечные пробелы.
источник
Ни один из других примеров у меня не работал, поэтому я использовал этот:
это заменяет все табуляции, новые строки, двойные пробелы и т. д. на простой 1 пробел.
источник
\s+
. Хотя это было еще в 2014 году, поэтому, возможно, он был изменен, не касался PHP в течение последних 3 лет, не может комментировать, но оставит текущий ответ, пока это было решение, и может все еще быть в некоторых случаях.Если вы хотите заменить только несколько пробелов в строке, например:
"this string have lots of space . "
И вы ожидаете, что ответ будет"this string have lots of space"
, вы можете использовать следующее решение:источник
Использование preg_replace () имеет недостатки безопасности, если вы получаете полезную нагрузку из пользовательского ввода [или из других ненадежных источников]. PHP выполняет регулярное выражение с помощью eval (). Если входящая строка не обработана должным образом, ваше приложение рискует подвергнуться инъекции кода .
В моем собственном приложении, вместо того, чтобы беспокоиться о дезинфекции ввода (и поскольку я имею дело только с короткими строками), я вместо этого сделал немного более интенсивную функцию процессора, хотя и безопасную, поскольку она ничего не использует eval ().
источник
источник
Ты можешь использовать:
Это удаляет лишние пробелы с обеих сторон строки и преобразует два пробела в один внутри строки. Обратите внимание, что это не преобразует три или более пробелов подряд в один! Еще один способ, который я могу предложить, - это использовать взрыв и взрыв, который безопаснее, но совершенно не оптимален!
Я предлагаю использовать собственный цикл for или регулярное выражение для выполнения такой работы.
источник
Чтобы расширить ответ Сандипа, у меня в журналах появилось несколько строк, которые были неправильно закодированы в bit.ly. Они хотели закодировать только URL-адрес, но после пробела поместили дескриптор твиттера и еще кое-что. Это выглядело так
Обычно это не проблема, но я получаю много попыток SQL-инъекций, поэтому я перенаправляю все, что не является допустимым идентификатором, на 404. Я использовал метод preg_replace, чтобы преобразовать недопустимую строку productID в строку действительный productID.
Я ищу пробел в URL-адресе, а затем удаляю все после него.
источник
Недавно я написал простую функцию, которая удаляет лишние пробелы из строки без регулярного выражения
implode(' ', array_filter(explode(' ', $str)))
.источник
источник