Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Повторяющиеся строки
 
 автор: demon666   (06.07.2007 в 23:28)   письмо автору
 
 

Здравствуйте! подскажите регулярное выражение, для того чтобы найти повторяющиеся строки в файле.
Есть файл txt файл, записи в нем:


http://site.ru/1111/file.zip
http://site.ru/18766/text.zip
http://site.ru/2777/yjygt.zip
http://site.ru/1111/file.zip
http://site.ru/12344/file666.zip
http://site.ru/1111/file.zip
http://site.ru/12345/5464.zip
http://site.ru/18766/text.zip
http://site.ru/99854/123.zip


Как видим
http://site.ru/1111/file.zip
http://site.ru/18766/text.zip
повторяется несколько раз, мне же нужно чтобы такие ссылки были только одни. При чем ссылки могут быть разными, и могут повторятся в файле. Все они имеют маску http://site.ru/*****/***.zip

Заранее спасибо за помощь, если решение проблемы вообще возможно!

   
 
 автор: mr dee   (07.07.2007 в 11:58)   письмо автору
 
   для: demon666   (06.07.2007 в 23:28)
 

Тут нужно думать, но вот что на ум только пришло:
регулярка тут вроде то и не нужна. здесь нужно разобрать файл на строки и уже сравнивать эти строки. а вот каким образом уже сравнивать, тут методов можно много найти и нужно опять же думать.

   
 
 автор: kasmanaft   (07.07.2007 в 18:19)   письмо автору
 
   для: demon666   (06.07.2007 в 23:28)
 

Тут будет удобно воспользоваться функцией array_unique()
<?php
$text 
"............"// проследите, чтобы в конце строк не было пробелов
$arr array_unique(explode("\r\n"$text));
echo 
implode("\r\n"$arr);


Ну, а если интересно, рег. выражениями можно сделать, например, так:
while (preg_match("#(http://site\.ru/\S+/\S+\.zip)(.*)\\1#Us", $text))
    $text = preg_replace("#(http://site\.ru/\S+/\S+\.zip)(.*)\s+\\1#Us", "$1$2", $text);
echo $text;

   
 
 автор: demon666   (07.07.2007 в 19:32)   письмо автору
 
   для: kasmanaft   (07.07.2007 в 18:19)
 

спасибо, буду знать! Просто в моем случае можно было поступить проще. т.к. ссылки записывались моим же скриптом....



$filename="file.txt";// Имя файла
$dr = fopen($filename, "r");// Читаем файл
$bufer = fread($dr, filesize($filename));// Данные заносим в переменную 
fclose($dr);// Закрываем файл
$content = explode("\n",$bufer);// Удаляем перенос
if(!in_array($put,$content))// Проверяем на существование значения
  {// Если такого значения нет - добавляем его в файл
    $dr = fopen($filename, "a");// Открываем файл для записи
    fwrite ($dr,$put."\n");// Записываем в файл значения
    fclose($dr); // Закрываем файл
  }

   
 
 автор: Trianon   (08.07.2007 в 03:17)   письмо автору
 
   для: demon666   (06.07.2007 в 23:28)
 


for($h = fopen("file.txt", "rb"), $data=array(); !feof($h);)
    $data[trim(fgets($h))] =1;
$data = array_keys($data);
print_r($data);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования