Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
sherxan-g
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 3
1

Как заменить ТИЦ на ИКС

13.10.2018, 23:51. Просмотров 819. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
function getYandexTic($url){
    $ans=-1;
 
    $str=send_packet('http://bar-navig.yandex.ru/u?ver=2&show=32&url='.urlencode((substr(strtolower($url),0,7)!="http://")?"http://".$url:$url));
    if($str){
        if(preg_match("#value=\"(.\d*)\"#", $str, $tic)){
            $ans=$tic[1];
        }
    }
 
    return $ans;
}
НУЖНО ЗАМЕНИТЬ НА ИКС

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/**
* Получение численного значения параметра Яндекс ИКС с картинки
*
* URI: https://a-panov.ru/massovaya-proverka-iks-skript-na-php/
* Version: 1.0
* Author: Andi Panov <a@a-panov.ru>
* Author URI: http://a-panov.ru/
* License: GPLv2
*/
 
class YandexIks
{
    private static $reference = [
        '..xxxxxx....xxxxxxxxx.xxxxxxxxxxxxx.......xxxx.......xxxxx.....xxxxxxxxxxxxxx.xxxxxxxx..',
        '..xx........xxx.......xxx........xxxxxxxxxxxxxxxxxxxxxx',
        '.........xxxx......xxxxx......xxxxx.....xxxxxx...xxxx.xxxx.xxxx..xxxxxxxx...x.xxxx.....x',
        'x........xxxx.......xxxx...x...xxxx...x...xxxx..xxx..xxxxxxxxxxxxxxxxxxxxxxxx......xxxx.',
        '......xx.......xxxx......xxxxx....xxxx..x...xxxx...x...xxxxxxxxxxxxxxxxxxxxxx.......x...',
        '..........xxxxxxx...xxxxxxxx...xxx...xx...xxx...xx...xxx...xxxxxxxx...xxxxxxx.....xxxx..',
        '....xxxxx....xxxxxxxxx.xxxxxx.xxxxxxxxx...xxxxx.xx...xxxx..xx...xxx...xxxxxxxx....xxxxx.',
        'x..........x.........xx.......xxxx....xxxxxxx..xxxxxx..xxxxxxx....xxxxx......xxx........',
        '......xxxx.xxxxxxxxxxxxxxxxxxxxxxxx..xxx..xxxx..xxx..xxxxxxxxx..xxxxxxxxxxxxx.xxxx.xxxx.',
        '.xxxxx.....xxxxxxx...xxxx.xxx...xxx...xx..xxxx...xx.xxxxxx..xxxxx.xxxxxxxxx...xxxxxxx...',
    ];
   
    /**
    * Получение значения ИКС для указанного домена
    *
    * Данный метод не должен приводить к бану по IP при слишком частых запросов,
    * не выводится капча.
    */
    public static function getValueFromImage($domain) {
        $yaurl = 'https://www.yandex.ru/cycounter?' . $domain;
        $img = @imagecreatefrompng($yaurl);
       
        return $img ? self::parseImg($img) : '-';
    }
   
    private static function parseImg(&$src_img) {
        // где могут размещаться данные по ИКС
        $iks_x = 26;
        $iks_y = 10;
        $iks_w = 56;
        $iks_h = 11;
       
        // сюда вырезается нужная часть изображения
        $dst_img = imagecreatetruecolor($iks_w, $iks_h);
       
        // нужна часть изображения, на которой могут быть цифры
        imagecopy($dst_img, $src_img, 0, 0, $iks_x, $iks_y, $iks_w, $iks_h);
       
        $arr = [];
        for ($i = 0; $i < $iks_w; ++$i) {
            $arr[$i] = '';
            for ($j = 0; $j < $iks_h; ++$j) {
                $arr[$i] .= 8882055 == imagecolorat($dst_img, $i, $j) ? '.' : 'x';
            }
        }
       
        // подчистить пустые ряды
        for ($i = 0; $i < $iks_w; ++$i) {
            if ('...........' == $arr[$i])  unset($arr[$i]);
        }
       
        $iks = '';
        $current_symbol = '';
        $current_len = 0;
       
        foreach ($arr as $v) {
            $current_symbol .= $v;
            $current_len += 11;
           
            if (88 == $current_len) { // все символы имеют ширину 8
                foreach (self::$reference as $num => $symb) {
                    if (similar_text($symb, $current_symbol) > 80) {
                        $iks .= $num;
                        break;
                    }
                }
                $current_symbol = '';
                $current_len = 0;
            } elseif (55 == $current_len) { // кроме 1 — у него ширина 5
                if (similar_text(self::$reference[1], $current_symbol) > 50) {
                    $iks .= 1;
                    $current_symbol = '';
                    $current_len = 0;
                }
            }
        }
        return $iks;
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2018, 23:51
Ответы с готовыми решениями:

Определить букву икс и х(русскую)
Есть переменная $name = ''; //x это икс английская $name =...

Подскажите как нарастить тиц. Пр-2 тиц-0
Подскажите как нарастить тиц. У моего сайта пр = 2 а тиц = 0. Чем отличаеться наращивание пр и...

Как выразить икс из уравнения
Уважаемые эксперты! Пожалуйста, ответьте на вопрос: http://*************/s/3xjvQIx или ...

Как записать синус двух икс?
Как составить программу на С++. функций sin x, sin x2, sin2 x для двух значений аргумента.

Как в паскале записать икс в пятой степени?
Как в паскале записать икс в пятой степени? Нам сказали, что ** - функция возведения в степень в...

2
Para bellum
Эксперт PHP
4152 / 3087 / 999
Регистрация: 06.01.2011
Сообщений: 9,021
14.10.2018, 06:47 2
Лучший ответ Сообщение было отмечено sherxan-g как решение

Решение

Замените вызов getYandexTic на YandexIks::getValueFromImage
1
sherxan-g
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 3
14.10.2018, 22:39  [ТС] 3
все норм спасибо уважаемый человек
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2018, 22:39

Как найти папку с именем икс в корневой папке?
известно имя папки, путь корневой папки. В корневой папке также имеются папки с уровнем вложения...

Как написать формулу e в степени минус икс в квадрате
Здравствуйте! Подскажите,как в екселе написать формулу e в степени минус икс в квадрате я пишу...

тиц 1300 пр4 выше чем тиц 1600 пр5
http://www.raznoves.ru/scripts/ya_parser.p...%E0%E2%E8%F2%FC сравните сами 2 и 6... оба в ЯКе......


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru