Сегодня я расскажу о том, как избавиться от лишних пробелов и переводов строк с помощью регулярных выражений PHP.
Вообще, регулярные выражения очень хорошая вещь! С их помощью можно создавать достаточно сложные конструкции. Новичкам рекомендую почитать об этом на php.su.
Теперь о том, как избавиться от ненужных символов.
В природе существуют такие пользователи, которые могут случайно написать что-нибудь ненужное или специально напортачить и сделать, например, 100500 переводов строк, зажав кнопку Enter. Ну, встречались с такими, да?! :-)
Итак, если таковые завелись у вас на сайте, то пишем следующий код для удаления лишних пробелов:
// Строка с лишними пробелами
$text = " maxso f . r u ";
// Удаляем лишние пробелы
$text = preg_replace("/[ ]+/i", "", $text);
/* В итоге получаем: maxsof.ru */
Такое преобразование подойдет для строк в которых вообще не должны содержаться пробелы, таких как адрес сайта, логин, пароль, эл. ящик и тп. В остальных случаях можно воспользоваться функциями PHP:
trim() — удаляет пробелы из начала и конца строки.
ltrim() — удаляет пробелы из начала строки.
rtrim() — удаляет пробелы из конца строки.
Теперь боремся с переводом строк:
// Текст с кучей лишних переводов строки
$text = "У лукоморья дуб зелёный;
Златая цепь на дубе том:
И днём и ночью кот учёный
Всё ходит по цепи кругом;
Идёт направо - песнь заводит,
Налево - сказку говорит.
Там чудеса: там леший бродит,
Русалка на ветвях сидит;";
// Удаляем двойные (тройные и тд.) переводы строк
$text = preg_replace("/(\r\n)+/i", "\r\n", $text);
/* В итоге получаем:
У лукоморья дуб зелёный;
Златая цепь на дубе том:
И днём и ночью кот учёный
Всё ходит по цепи кругом;
Идёт направо - песнь заводит,
Налево - сказку говорит.
Там чудеса: там леший бродит,
Русалка на ветвях сидит; */
Чтобы преобразовать все тройные (или больше) переводы строк на двойные, а двойные и одинарные оставить без изменения, нужно сделать так:
$text = preg_replace("/(\r\n)+(\r\n)/i", "\r\n\r\n", $text);
Ну, вот, как-то так. Удачи и ведите себя хорошо ;-)