АРМАДА
Помогите с яваскриптом
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

sydoow
V.I.P.
Зарегистрирован: 29.06.2007
Сообщений: 8213
Обратиться по нику
# Добавлено:Пн Ноя 15, 2010 5:00 amДобавить в избранноеОтветить с цитатой
Кто шарит в нём хорошо и кому не сложно, никадайте сктрипт (я думаю там не много строк).
Его суть такова.
В html форму я вставляю ссылки вида
Цитата:

http://xxx.armadaboard.com/posting.php?mode=newtopic&f=8
http://yyy.armadaboard.com
http://www.armadaboard.com/pos55555
http://armadaboard.com/posti22222
http://www.armadaboard.net/posting.php/3393ddd
http://sydoow.armadaboard.ru/posting.php?moeeeeerrr33
http://sydoow.armadaboard777.ru/posting.php?mode=newtopic&f=8666



а на выходе нужно чтобы выдавался отчёт

Цитата:

armadaboard.com - 4 links
armadaboard.net - 1 links
armadaboard.ru - 1 links
armadaboard777.ru - 1 links



Т.е. нужно чтобы были найдены дубли доменов второго уровня и подсчитаны.

Здесь вроде ничего сложного. Немного явы и регулярок, но я в них не шарю.

Jungle
Свой
Зарегистрирован: 16.05.2009
Сообщений: 27
Обратиться по нику
# Добавлено:Пн Ноя 15, 2010 6:32 amОтветить с цитатой
Код:

<!DOCTYPE HTML>
<html lang="ru">
<head>
    <title>Link Counter</title>
    <meta charset="UTF-8">
    <script type="text/javascript">
        function count(input_id, output_id){
            var input = document.getElementById(input_id).value;
            var output = document.getElementById(output_id);
            var separator = /\s+/;
           
            input = input.split(separator);
            var counter = {};
            for (var i = 0; i < input.length; i++) {
                var link = input[i];
                var a = document.createElement('a');
                a.href = link;
               
                var domain = a.host.split('.');
                var dlen = domain.length;
                domain = domain.slice(dlen - 2).join('.');
               
                counter[domain] = counter[domain] === undefined ? 1 : counter[domain] + 1;
            }

            var s = ''
            for (var k in counter){
                s += k + ': ' + counter[k] + '\n';
            }
            output.innerText = s;
        }
    </script>
</head>
<body>
   <h1>Link counter</h1>
    <form onsubmit="count('links', 'result'); return false">
        <textarea id="links" name="links" rows="10" cols="30"></textarea>
        <br/>
        <input type="submit" />
    </form>
    <pre id="result"></pre>
</body>
</html>

SEO ныряльщик

sydoow
V.I.P.
Зарегистрирован: 29.06.2007
Сообщений: 8213
Обратиться по нику
# Добавлено:Пн Ноя 15, 2010 7:05 amОтветить с цитатой
Jungle, спасибо тебе большое Smile
Drinks or Beer Drinks or Beer Drinks or Beer

sydoow
V.I.P.
Зарегистрирован: 29.06.2007
Сообщений: 8213
Обратиться по нику
# Добавлено:Пн Ноя 15, 2010 7:20 amОтветить с цитатой
А как можно изменить этот скрипт чтобы искать совпадения по доменам не второго а третьего уровня?

Jungle
Свой
Зарегистрирован: 16.05.2009
Сообщений: 27
Обратиться по нику
# Добавлено:Пн Ноя 15, 2010 2:49 pmОтветить с цитатой
Код:

<!DOCTYPE HTML>
<html lang="ru">
<head>
    <title>Link Counter</title>
    <meta charset="UTF-8">
    <script type="text/javascript">
        function count(input_id, output_id, level){
            var input = document.getElementById(input_id).value;
            var output = document.getElementById(output_id);
            var separator = /\s+/;

            level = level;
           
            input = input.split(separator);
            var counter = {};
            for (var i = 0; i < input.length; i++) {
                var link = input[i];
                if (!link.length){continue;}
                var a = document.createElement('a');
                a.href = link;
               
                var domain = a.host.split('.');
                var dlen = domain.length;

                if (level < dlen) {
                    domain = domain.slice(-level);
                }
                domain = domain.join('.');
               
                counter[domain] = counter[domain] === undefined ? 1 : counter[domain] + 1;
            }

            var s = ''
            for (var k in counter){
                s += k + ': ' + counter[k] + '\n';
            }
            output.innerText = s;
        }
    </script>
</head>
<body>
   <h1>Link counter</h1>
    <form onsubmit="count('links', 'result', document.getElementById('level').value); return false">
        <textarea id="links" name="links" rows="10" cols="70"></textarea>
        <br/>
        Level: <input id="level" type="text" value="2" />
        <br />
        <input type="submit" />
    </form>
    <pre id="result"></pre>
</body>
</html>

SEO ныряльщик

Tomas-R + +
V.I.P.
Зарегистрирован: 07.01.2008
Сообщений: 5567
Обратиться по нику
# Добавлено:Пн Ноя 15, 2010 4:52 pmОтветить с цитатой
в кодах не шарю, но спасибо Jungle, что напомнил детство инета - когда бесплатно, всей толпой писали коды и скрипты
рекламная подпись (в PM)

Jungle
Свой
Зарегистрирован: 16.05.2009
Сообщений: 27
Обратиться по нику
# Добавлено:Пн Ноя 15, 2010 5:15 pmОтветить с цитатой
Tomas-R писал(а):
в кодах не шарю, но спасибо Jungle, что напомнил детство инета - когда бесплатно, всей толпой писали коды и скрипты


пожалуйста, пользуйтесь, разминка перед работой Smile
SEO ныряльщик

sydoow
V.I.P.
Зарегистрирован: 29.06.2007
Сообщений: 8213
Обратиться по нику
# Добавлено:Вт Ноя 16, 2010 12:25 amОтветить с цитатой
Спасибо ещё раз Drinks or Beer Drinks or Beer Drinks or Beer

Jungle
Свой
Зарегистрирован: 16.05.2009
Сообщений: 27
Обратиться по нику
# Добавлено:Вт Ноя 16, 2010 9:21 amОтветить с цитатой
sydoow писал(а):
Спасибо ещё раз Drinks or Beer Drinks or Beer Drinks or Beer


не за что Drinks or Beer Drinks or Beer Drinks or Beer
SEO ныряльщик
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры