БлогNot. PHP: удаляем пустые строки и сортируем список без RegExp

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>
Скриншот приложения в работе (фрагмент)
Скриншот приложения в работе (фрагмент)

теги: учебное php textprocessing

14.10.2019, 14:57; рейтинг: 142