PHP: удаляем пустые строки и сортируем список без RegExp
Совсем простой код, так как (по условию) не нужны были регулярки или даже мини-сервисы вроде SUS и NL2BR, а хотелось только убрать из многострочного поля ввода пустые строки, избавиться от лишних лидирующих и завершающих пробелов в строках, возможно, также отсортировать список строк без учёта регистра символов (опционально).
Предполагается, что всё закодировано в кодировке Юникода UTF-8, выполнить у себя на компьютере можно, например, как описано в предыдущей заметке, создав файл c:\xampp\htdocs\text1.php
и открыв из браузера ссылку http://localhost/text1.php
Ниже приводится полный листинг файла text1.php
и скриншот.
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Обработка текста в Юникоде</title> </head> <body> <?php $text = ''; if (isset($_POST['text'])) { $text = htmlspecialchars(trim($_POST['text'])); $arr = explode ("\n", $text); //Получить массив строк $arr = array_filter ($arr, //Удалить пустые строки function ($item) { return !empty(trim($item)); } ); $arr = array_map (function ($item) {return trim($item); }, $arr); //Избавиться от лишних разделителей в начале и конце строк if (isset($_POST['sort'])) usort ($arr, function ($a,$b) { //Сортировать return strcasecmp(mb_strtolower($a),mb_strtolower($b)); } ); $text = implode ("\n",$arr); //Массив обратно в строку } ?> <form method="post"> <textarea rows="16" cols="80" name="text"><?php echo "$text"; ?></textarea> <p> <label for="sort">Сортировать</label> <input type="checkbox" name="sort" id="sort" <?php echo isset($_POST['sort']) ? 'checked' : ''; ?>> <input type="submit" value="OK"> </p> </form> </body> </html>
Скриншот приложения в работе (фрагмент)
14.10.2019, 14:57 [1495 просмотров]