Я получаю строку из запроса базы данных, затем удаляю все теги HTML, возвраты каретки и новые строки перед тем, как поместить их в файл CSV. Единственное, я не могу найти способ удалить лишнее пустое пространство между строками.
Каким будет лучший способ удалить внутренние пробельные символы?
Не уверен, что именно вы хотите, но вот две ситуации:
Если вы просто имеете дело с избыточным пробелом в начале или конце строки, вы можете использовать trim()
, ltrim()
или rtrim()
чтобы удалить его.
Если вы имеете дело с дополнительными пробелами внутри строки, рассмотрите 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, а затем удаляю все после него.