X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Добавить ответ в эту тему
> Нужен скрипт на php или аналогичный
Kuzzma
Kuzzma
Topic Starter сообщение 19.8.2019, 16:51; Ответить: Kuzzma
Сообщение #1


Завсегдатай
*****


Группа: Active User
Сообщений: 501
Регистрация: 12.6.2015
Из: Москва
Поблагодарили: 172 раза
Репутация:   23  


Всем привет!

Нужна небольшая помощь по php, вот ТЗ:

Есть база (строки с доменами), хранится всё в файле txt или в Excel, примеры:

lookatme.ru/mag/live/experience-news/187823-rzhd-podali-na-apple-v-sud-za-ispolzovanie-svoego-logo
или
forums.gentoo.org/viewtopic-t-452547-start-0.html

Нужно после обработки скриптом на выходе получить базу (в любом формате), где останется только домен и расширение (зона), т.е. нужно так:

lookatme.ru
gentoo.org

Базы большие и содержат до 500 000 строк, если это принципиально.

На php такое можно реализовать? Какие есть ещё варианты?

Заранее спасибо всем, кто ответит.

Kuzzma


--------------------
Здесь информация о Ваших сайтах, товарах, услугах (свободно)

Flextype - маленькая, быстрая и бесплатная CMS для сайтов!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 19.8.2019, 16:57; Ответить: x64
Сообщение #2


F.A.L.L.O.U.T.
*******

Группа: Super Moderator
Сообщений: 3867
Регистрация: 30.6.2011
Из: Железнодорожный (Балашиха)
Поблагодарили: 3231 раз
Репутация:   317  


Вариант самый простой — регулярные выражения.
Открываем txt-файл в notepad2 или notepad++, жмакаем Ctrl-H. Строка Найти:
/.+
Строку Замена оставляем пустой.
Обязательно отмечаем галку Регулярные выражения. Потом Заменить всё — и готово.

Касательно основного домена и зоны. От gentoo.com.ru нельзя оставлять com.ru.


--------------------


Поблагодарили: (2)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuzzma
Kuzzma
Topic Starter сообщение 19.8.2019, 17:26; Ответить: Kuzzma
Сообщение #3


Завсегдатай
*****


Группа: Active User
Сообщений: 501
Регистрация: 12.6.2015
Из: Москва
Поблагодарили: 172 раза
Репутация:   23  


x64, привет!

Спасибо огромное!

Проверил Ваш вариант. Вроде работает, но не до конца, например:

было так
forum.cayservice.ru/showthread.php?t=15&page=34

стало так
forum.cayservice.ru

Может чего в формулу ещё нужно добавить, чтобы убирал поддомены?

Kuzzma



--------------------
Здесь информация о Ваших сайтах, товарах, услугах (свободно)

Flextype - маленькая, быстрая и бесплатная CMS для сайтов!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
icoder
icoder
сообщение 19.8.2019, 17:49; Ответить: icoder
Сообщение #4


Частый гость
**

Группа: User
Сообщений: 71
Регистрация: 14.6.2019
Поблагодарили: 23 раза
Репутация:   3  


Kuzzma,
Код
$filename = __DIR__.'/links.txt'; // путь к файлу с ссылками
$data = array();

if (file_exists($filename)) {
    $links = file_get_contents($filename);
    if (!empty($links)) {
        $links = explode("\r\n", $links);
        foreach ($links as $one) {
            if (!empty($one)) {
                $one = trim($one);
                $one = preg_replace('/\/.*$/', '', $one);
                $one = explode('.', $one);
                $one_count = count($one);
                if ($one_count > 1) {
                    $one = $one[$one_count-2]. '.' . $one[$one_count-1];
                    $data[] = $one;
                }
            }
        }
    }
}

$data_count = count($data);
if($data_count > 0){
  // удаляем дубли
  $data = array_unique($data);
  // адрес файла для записи результатов
  $filename = __DIR__.'/data.txt';
  $filedata = implode("\r\n", $data);
  // записываем файл
  @file_put_contents($filename, $filedata, LOCK_EX);
}


Но проблема в том, что если будут домены типа DOMEN.COM.RU, то будет обрезаться все кроме COM.RU

icoder,
Как вариант, можно сделать массив доменов-исключений, для которых допускается записывать поддомены
Код
// массив доменов, для которых допустимы поддомены
$domen = array(
    'com.ru',
    'ru.net',
    'net.ru'
    );

$filename = __DIR__.'/links.txt'; // путь к файлу с ссылками
$data = array();

if (file_exists($filename)) {
    $links = file_get_contents($filename);
    if (!empty($links)) {
        $links = explode("\r\n", $links);
        foreach ($links as $one) {
            if (!empty($one)) {
                $one = trim($one);
                $one = strtolower($one);
                $one = preg_replace('/\/.*$/', '', $one);
                $one = explode('.', $one);
                $one_count = count($one);
                if ($one_count > 1) {
                    $str = $one[$one_count-2]. '.' .$one[$one_count-1];
                    if (in_array($str, $domen) && !empty($one[$one_count-3])) {
                        $str = $one[$one_count-3]. '.' .$str;
                    }
                    $data[] = $str;
                }
            }
        }
    }
}

$data_count = count($data);
if($data_count > 0){
  // удаляем дубли
  $data = array_unique($data);
  // адрес файла для записи результатов
  $filename = __DIR__.'/data.txt';
  $filedata = implode("\r\n", $data);
  // записываем файл
  @file_put_contents($filename, $filedata, LOCK_EX);
}



--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
VinogradOFF
VinogradOFF
сообщение 19.8.2019, 20:31; Ответить: VinogradOFF
Сообщение #5


Топовый постер
*******


Группа: Active User
Сообщений: 3557
Регистрация: 7.8.2018
Из: Казань
Поблагодарили: 494 раза
Репутация:   37  


А еще можно в эксееле использовать разделитель



но 500к строк не удобно и остается проблема с поддоменом, которая также решается сначала разделителем точкой, потом склеиванеим последующих столбцов домен|точка|зона

Но на php конечно элегантнее в разы
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Earth_spirit
Earth_spirit
сообщение 21.11.2019, 13:12; Ответить: Earth_spirit
Сообщение #6


Новичок
*

Группа: User
Сообщений: 19
Регистрация: 20.11.2019
Поблагодарили: 4 раза
Репутация:   0  


Да, в экселе можно, но с таким объемом там неудобно было бы работать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Добавить ответ в эту тему
Быстрый ответ
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Новые тренды или куда делись все бомжи?
А помните, какое время было еще 10 лет назад?..
16 SpAwN 368 Сегодня, 22:22
автор: metvekot
Открытая тема (нет новых ответов) Рекомендую: размещение ссылки, статьи или баннера на трастовом СМИ с трафиком 100 тыс. уников в сутки
0 rumblade 34 Сегодня, 19:54
автор: rumblade
Открытая тема (нет новых ответов) Нужен спец по DLE
не правильно работает 301 редирект на сайте
3 autonew 116 Сегодня, 12:16
автор: WoWeb
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыКаталог организаций или его аналоги.
11 2009bes 614 23.2.2020, 13:29
автор: 2009bes
Открытая тема (нет новых ответов) Обменяю WMZ на WMR или вывод
1 Mukis 132 22.2.2020, 0:18
автор: loginmain


 



RSS Текстовая версия Сейчас: 25.2.2020, 22:48
Дизайн