В SO есть несколько вопросов об удалении пробелов, на которые обычно отвечают preg_replace('/[\s]{2,}/, '', $string)
или аналогичный ответ, который принимает более одного пробела и удаляет их или заменяет один из символов.
Это становится более сложным, когда разрешено определенное дублирование пробелов (например, текстовые блоки с двумя разрывами строк и одним разрывом строк, как разрешенными, так и релевантными), более того, объединяя символы пробелов (\n
, \r
).
Вот пример текста, который, хотя и беспорядочно, охватывает то, что, я думаю, вы могли бы в итоге попытаться представить разумным образом (например, пользовательский ввод, который ранее был отформатирован с использованием HTML и теперь удален)
$text = "\nDear Miss Test McTestFace,\r\n \n We have received your customer support request about:\n \tA bug on our website\n \t \n \n \n We will be in touch by : \n\r\tNext Wednesday. \n \r\n \n Thank you for your custom; \n \r \t \n If you have further questions please feel free to email us. \n \n\r\n \n Sincerely \n \n Customer service team \n \n";
Если нашей целью было иметь его в формате:
Уважаемая мисс Тест McTestFace,
Мы получили ваш запрос в службу поддержки о: Ошибка на нашем
сайт
Мы свяжемся с вами: в следующую среду.
Спасибо за ваш заказ;
Если у вас есть дополнительные вопросы, пожалуйста, напишите нам.
С уважением
Служба поддержки клиентов
Как бы мы этого достигли - простое регулярное выражение, более сложная итерация или уже есть библиотеки, которые могут это сделать?
Также есть ли способы сделать тестовый пример более сложным и, таким образом, дать более надежный общий алгоритм?