Pers.narod.ru. PHP. Статьи. Sort and Unique strings сервис

При работе с большими списками строк, например, адресами E-mail или паролями для какой-то базы данных, словарями, логами и т.д., часто требуется автоматическая обработка этих списков:

Сортировку можно сделать и в офисных программах, а вот остальные задачи для списка из 50 или даже 5 тысяч строк никто "вручную" решать не станет, гораздо проще и удобнее написать для этой цели небольшой сервис на PHP.

Для удаления лишних пробелов, и, возможно, пустых (состоящих только из разделителей) строк достаточно одного прохода по строковому массиву, этот "ручной" проход будет работать быстрее, чем unset для разыменования отдельных элементов массива, применение фильтрующей элементы функции пользователя в array_filter или же вызов функции array_diff.

Данную работу выполняет функция array_delete_empty_items:

function array_delete_empty_items ($array,$delspaces,$delvoidstr) { 
 //Удалить лишние пробелы ($delspaces) и/или пустые строки ($delvoidstr) из массива строк $array
 $result = array();
 foreach ($array as $key => $value) {
  if ($delspaces) $value = preg_replace("/[ \t]{2,}/"," ",trim($value));
  if ($delvoidstr and ($value=='' or preg_match("/^\s+$/",$value))) continue;
  $result[] = $value;
 }
 return $result;
}

Вся остальная реализация выполняется стандартными функциями PHP, в итоге получается вот что:

if (!empty($in)) { //Параметр $in - входной текст, полученный через форму
 $out=$in;
 $a = explode ("\n", $out);
 if ($delspaces or $delvoidstr) $a = array_delete_empty_items ($a,$delspaces,$delvoidstr);
 if ($uniquestr) $a=array_unique ($a);
 if ($sortstr) sort ($a,SORT_LOCALE_STRING); 
 $out = implode ("\n", $a); //$out - результат обработки
}
else $out= 'Нет входных данных для обработки';

Надо предполагать, что порядок выполнения операций тоже не безразличен - например, изначально различные строки могут стать одинаковыми после удаления лишних пробелов. Так как загрузка файла всегда потенциально опасней, чем текст из MEMO-поля, я не стал её реализовывать в онлайн-версии сервиса. В принципе, используя типовые приёмы для работы с файлами, это легко сделать.

Скрипт требует PHP 5.0.2 или выше. Онлайн-сервис может изменяться и несколько отличаться от описания.

 Сортировка строк, удаление лишних пробелов, пустых и повторяющихся строк - скрипт в работе

 Архив с исходным текстом скрипта (2 Кб)

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz