Как удалить все пробелы, если несколько

99
8

Я пытаюсь удалить все пробелы в PHP из html-контента, если он длиннее одного, например, такая цепочка:

{{IMG}}                                     {{IMG}}                                     {{IMG}}                                     {{IMG}}                                     {{IMG}}

Но не должно влиять на предложение вроде: О нас.

Должно ли это выполняться с помощью регулярного выражения? Есть идеи?

PS: переменная уже используется с trim(); который удаляет белые пробелы в конце и в начале, но не между символами...

Большое спасибо за вашу помощь.

спросил(а) 2021-01-25T17:49:14+03:00 5 месяцев назад
1
Решение
77

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

Это заменит все пробелы одним пространством.

ответил(а) 2021-01-25T17:49:14+03:00 5 месяцев назад
46

Вы могли бы сделать что-то вроде этого:

Пример 1. Удалите пробелы, если более 1

<?php
# Test variable
$string = "HELLO I HAVE WHITE SPACEEE!!1";

# Count all whitespaces
# Contains more than 1 whitespace
if(substr_count($string, ' ') > 1) {
# Example 1: Remove the whitespaces

$string = preg_replace('/\s+/', '', $string);
}
# Ouput: HELLOIHAVEWHITESPACEEE!!1
echo $string;
?>

Пример 2: Обрезать пробелы

<?php
# Test variable
$string = "HELLO I HAVE WHITE SPACEEE!!1";

# Count all whitespaces
# Contains more than 1 whitespace
if(substr_count($string, ' ') > 1) {
# Example 2: Remove the whitespaces

$string = trim($string);
}
# Ouput: HELLO I HAVE WHITE SPACEEE!!1
echo $string;
?>

Пример 3: Заменить пробелы

<?php
# Test variable
$string = "HELLO I HAVE WHITE SPACEEE!!1";

# Count all whitespaces
# Contains more than 1 whitespace
if(substr_count($string, ' ') > 1) {
# Example 1: Replace the whitespaces

$string = preg_replace('/\s+/', ' ', $string);
}
# Ouput: HELLO I HAVE WHITE SPACEEE!!1
echo $string;
?>

Пример 4:

<?php
# Test variable
$string = "HELLO I HAVE WHITE SPACEEE!!1 And I like bananas.";

# Count all whitespaces
# Contains more than 1 whitespace
if(substr_count($string, ' ') > 1) {
# Example 1: Replace the whitespaces

$string = preg_replace('/\s\s+/', '', $string);
}
# Ouput: HELLOIHAVEWHITESPACEEE!!1 And I like bananas.
echo $string;
?>

ответил(а) 2021-01-25T17:49:14+03:00 5 месяцев назад
45

Это довольно странный запрос, если вы спросите меня.

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

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

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

ответил(а) 2021-01-25T17:49:14+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема