Intereting Posts
Отфильтровать заказы с помощью WP_Query из массива идентификаторов заказов в WooCommerce Переписать URL .htaccess Php проанализировал таблицу html и подсчитал значение <td>, похожее на другое php. Должен ли я шифровать адреса электронной почты? Как получить show_error () в CodeIgniter для загрузки представления? PHP и <noscript> для обнаружения включенного JavaScript в браузере как я могу получить идентификатор входа пользователя из mysql с помощью глобальной переменной в моем приложении для Android? В htaccess я хотел бы заменить символы подчеркивания дефисом, а затем перенаправить пользователя новый URL-адрес Как получить __debugInfo для работы с XDebug? Не удается получить переменные get в Laravel Laravel перенаправить все запросы в НТТПС Не удается получить предыдущий месяц из DateTime в PHP. Является ли это (довольно большой) ошибкой? Разбор строки пользовательского агента мобильного телефона, хорошее решение или библиотека? Как получить общее количество строк запроса GROUP BY? Служба PHP artisan отключается после запуска

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

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

Каким будет лучший способ удалить внутренние пробельные символы?

Не уверен, что именно вы хотите, но вот две ситуации:

  1. Если вы просто имеете дело с избыточным пробелом в начале или конце строки, вы можете использовать trim() , ltrim() или rtrim() чтобы удалить его.

  2. Если вы имеете дело с дополнительными пробелами внутри строки, рассмотрите preg_replace из нескольких пробелов " "* с одним пробелом " " .

Пример:

 $foo = preg_replace('/\s+/', ' ', $foo); 
 $str = str_replace(' ','',$str); 

Или, замените с подчеркиванием, & nbsp; и т.д.

$str = trim(preg_replace('/\s+/',' ', $str));

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

ни один из других примеров не работал для меня, поэтому я использовал этот:

 trim(preg_replace('/[\s\t\n\r\s]+/', ' ', $text_to_clean_up)) 

это заменяет все вкладки, новые строки, двойные пробелы и т. д. на простое 1 пространство.

Если вы хотите заменить только несколько пробелов в строке, для примера: "this string have lots of space . " И вы ожидаете, что ответ "this string have lots of space" , вы можете использовать следующее решение:

 $strng = "this string have lots of space . "; $strng = trim(preg_replace('/\s+/',' ', $strng)); echo $strng; 

$str=preg_replace('/[\s]+/',' ',$str);

Чтобы расширить ответ от Sandip, у меня было множество строк, появляющихся в журналах, которые были неправильно закодированы в bit.ly. Они предназначались для кодирования только URL-адреса, но после пробела добавляли твиттер и некоторые другие вещи. Это выглядело так

 ? productID =26%20via%20@LFS 

Обычно это было бы проблемой, но я получаю много попыток SQL-инъекций, поэтому я перенаправляю все, что не является допустимым идентификатором для 404. Я использовал метод preg_replace, чтобы сделать неверную строку productID в действительный productID.

 $productID=preg_replace('/[\s]+.*/','',$productID); 

Я ищу место в URL, а затем удаляю все после него.