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



 

Здравствуйте, гость (

| Вход | Регистрация )

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


Всем привет!

Нужна небольшая помощь по 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


--------------------
Здесь может быть Ваша реклама или ссылка на сайт! МЕСТО СВОБОДНО!

👉 КРИПТОБИРЖА №1 > Купить | BTC | Продать | ETH | Трейдинг | Обмен | Mastercard | VISA
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
x64
x64
сообщение 19.8.2019, 16:57; Ответить: x64
Сообщение #2


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

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


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


x64, привет!

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

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

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

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

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

Kuzzma



--------------------
Здесь может быть Ваша реклама или ссылка на сайт! МЕСТО СВОБОДНО!

👉 КРИПТОБИРЖА №1 > Купить | BTC | Продать | ETH | Трейдинг | Обмен | Mastercard | VISA
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
icoder
icoder
сообщение 19.8.2019, 17:49; Ответить: icoder
Сообщение #4


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


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



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

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


Да, в экселе можно, но с таким объемом там неудобно было бы работать

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Создать видеоканал лучше в ютуб или телеграм?
16 uahomka 3060 11.4.2024, 20:10
автор: Alexand3r
Открытая тема (нет новых ответов) Нужен кодер, чтобы пофиксить ошибку Wordpress после переноса сайта
0 Alex-777 819 7.4.2024, 18:05
автор: Alex-777
Открытая тема (нет новых ответов) Если статья не в индексе Google - она уникальна или нет?
5 uahomka 1432 3.4.2024, 23:56
автор: Liudmila
Открытая тема (нет новых ответов) Нужен исполнитель на постоянную основу для набора небольших текстов
20 Думающий 9276 2.4.2024, 18:05
автор: Думающий
Открытая тема (нет новых ответов) Где больше пробив на кликандер или попандер или попап трафике?
1 Boymaster 676 20.3.2024, 9:50
автор: Skyworker


 



RSS Текстовая версия Сейчас: 18.4.2024, 14:29
Дизайн