Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677

Приведите простой пример cURL

04.06.2012, 16:54. Показов 2967. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.Приведите пожалуйста простой пример cURL: скажем есть страница: http://www.test1.ru/home.php и мне нужно чтобы он нашёл слово(ссылку) ТРОЛОЛО и кликнул на неё.Как будет выглядеть код?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2012, 16:54
Ответы с готовыми решениями:

Простой пример простого uploada
Приведите Простой пример простого uploada

Нужен простой пример чтения PDF
дайте самый простой пример работы с файлом PDF на PHP

Не работает простой пример работы с SQL в php
Я новичок. Win 7, установлен Денвер, прочитал статью "Простой пример работы с базой данный в php. Часть 1." Скачал исходник, и вижу...

12
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.06.2012, 18:24
Linked, с помощью CURL мы можем только получить данные, но найти ссылку можно либо с помощью написания регулярных выражений, либо с помощью специальных готовых классов. Я использовал свою регулярку. Вот этот скрипт сработает так, как вы описали выше.
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
<?php
    // Адрес, на который отправляем запрос
    $URI = "http://www.test1.ru/home.php";
    
    // Ссылка, которую ищем (указывать только текст ссылки)
    $link = "ТРОЛОЛО";
    
    // Инициализируем сеанс CURL
    $main = curl_init( $URI );
    
    // Если сеанс инициализирован
    if( $main )
    {
        // Устанавливаем дополнительные опции
        // Опция указывает, что результат будет записан в переменную
        curl_setopt($main, CURLOPT_RETURNTRANSFER, 1);
        
        // Выполняем запрос
        $html = curl_exec( $main );
        
        // ============================================
        // ВНИМАНИЕ! ЕСЛИ КОДИРОВКА САЙТА, НА КОТОРЫЙ 
        // ВЫПОЛНЯЕТСЯ ЗАПРОС ОТЛИЧАЕТСЯ ОТ КОДИРОВКИ 
        // ДАННОГО ФАЙЛА, ПРОПУСТИТЕ ПЕРЕМЕННУЮ $html
        // ЧЕРЕЗ ФУНКЦИЮ iconv()
        // ============================================
 
        
        // Регулярное выражение для поиска ссылки
        // ============================================
        // ВНИМАНИЕ! ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ КОДИРОВКУ UTF-8
        // В КОНЦЕ РЕГУЛЯРНОГО ВЫРАЖЕНИЯ, ПОСЛЕ БУКВЫ "i"
        // ВПИШИТЕ БУКВУ "u"
        // ============================================
        
        $link = trim( $link );
                
        preg_match('/<a(.*)href\s*=\s*"\s*([a-z\-\_\/\.\:]*)s*"(.*)>\s*'.$link.'\s*<\s*\/\s*a>/i', $html, $found);
        
        // Ссылка, найденная в файле
        $link_found = $found[2];
        
        // Переходим по полученной ссылке
        $transition = curl_init( $link_found );
        
        // Опция указывает, что результат будет записан в переменную
        curl_setopt( $transition, CURLOPT_RETURNTRANSFER, 1 ); 
        
        // Выполняем запрос
        if( curl_exec( $transition ) )
        {
            echo "Клик по ссылке успешно выполнен";
        }
        
        // Закрываем сейчас клика по ссылке
        curl_close( $transition );
    }
    else
    {
        echo "Не удалось инициализировать сеанс CURL. Возможно у вас не установлена данная библиотека.";
    }
    
    // Завершаем сеанс CURL
    curl_close( $main );
?>
2
 Аватар для Linked
21 / 21 / 6
Регистрация: 12.12.2010
Сообщений: 677
04.06.2012, 19:50  [ТС]
Спасибо)
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
15.04.2014, 21:42
Извиняюсь, что поднял старую тему, нашёл, стал тестировать этот скрипт.

В качестве параметров использовал:
PHP
1
2
    $URI = "http://www.puzzleweb.ru/php/00_teacher.php";
    $link = "Переменные";
Пишет: Notice: Undefined offset: 2 in /var/www/gyuzel/data/www/test2.gyuzel-nn.ru/n_curl1.php on line 45

А строка 45 это:
PHP
1
$link_found = $found[2];
found[2] получается получается пустая, проверил var_dump так и есть array(0) { }

На большее меня пока не хватило, так почему не находит, где ошибка? В регулярке что ли?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
16.04.2014, 08:20
marrk, попробуйте так:
PHP
1
preg_match('~<a(.*)href\s?=\s?"([^"]*)"(.*)>\s?'.$link.'\s?</a>~iu', $html, $found);
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
16.04.2014, 09:26
Не работает, то же самое пишет:
PHP
1
preg_match('~<a(.*)href\s?=\s?"([^"]*)"(.*)>\s?'.$link.'\s?</a>~iu', $html, $found);
Решил упростить. Ищу на странице http://h65449.srv4.test-hf.ru/test.htm

Варианты:

PHP
1
2
3
4
5
6
7
preg_match('/Яндекс/i', $html, $found);  // Undefined offset: 2 in ($found[2];) в общем
preg_match('/Яндекс/u', $html, $found);  // То же самое
preg_match('~Яндекс~iu', $html, $found);  // То же самое
preg_match('~<a(.*)>Яндекс<(.*)a>~iu', $html, $found);  // То же самое
preg_match('~<a(.*)>(.*)<(.*)a>~iu', $html, $found);  // То же самое
preg_match('~<a href="http://www.yandex.ru/">Яндекс</a>~iu', $html, $found);  // То же самое
preg_match('~<a href="http:\/\/www.yandex.ru\/">Яндекс<\/a>~iu', $html, $found);  // То же самое
Понимаю что мы тут скорее на регулярки скатываемся, но по cURL тоже ещё есть вопросы curl_setopt, например, это обязательный атрибут в любом curl?
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
16.04.2014, 09:39
marrk,
PHP
1
var_dump($html);var_dump($found);
в какой кодировке у тебя файл php??
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
16.04.2014, 09:58
var_dump($html);var_dump($found);
Так делал уже. Выводит всю искомую страницу h65449.srv4.test-hf.ru/test.htm но внизу:
array(0) { } Notice: Undefined offset: 2 in .........php on line 49

Массив-то пустой, значит либо регулярка не работает, либо в curl_setopt надо ещё что-то добавить.
php-файл в utf-8 конечно
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
16.04.2014, 10:00
Цитата Сообщение от marrk Посмотреть сообщение
php-файл в utf-8 конечно
ай да молодец конечно
только страница откуда ты парсишь win1251
а в самом начале скрипта написано
Цитата Сообщение от lyod Посмотреть сообщение
// ======================================== ==== // ВНИМАНИЕ! ЕСЛИ КОДИРОВКА САЙТА, НА КОТОРЫЙ // ВЫПОЛНЯЕТСЯ ЗАПРОС ОТЛИЧАЕТСЯ ОТ КОДИРОВКИ // ДАННОГО ФАЙЛА, ПРОПУСТИТЕ ПЕРЕМЕННУЮ $html // ЧЕРЕЗ ФУНКЦИЮ iconv() // ======================================== ====
1
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
16.04.2014, 10:12
А блин, точно тупанул я. Если я правильно понял надо так:

PHP
1
iconv("windows-1251", "UTF-8", $html);
Только в каком месте скрипта это делать?
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
16.04.2014, 10:17
PHP
1
$html = iconv("WINDOWS-1251", "UTF-8", $html);
после
PHP
1
$html = curl_exec( $main );
я думаю
хотя можно строки объеденить
PHP
1
$html = iconv("WINDOWS-1251", "UTF-8", curl_exec( $main ));
1
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
16.04.2014, 10:34
Да, всё работает, клик по ссылке успешно выполнен.

Вот вопрос по этой же теме если у меня немного другая задача стоит, например <title> забрать со страницы регуляркой
PHP
1
2
if (preg_match('|<title.*?>(.*)</title>|sei', $str, $arr)) $title = $arr[1];
   else $title='';
То я в curl_setopt должен другие параметры задавать? Как определить какие параметры для этого требуются?
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
16.04.2014, 10:40
Цитата Сообщение от marrk Посмотреть сообщение
То я в curl_setopt должен другие параметры задавать?
зачем? титл также находится в html а вот регулярку я бы взял другую
Perl
1
<title>([^<]+)</title>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2014, 10:40
Помогаю со студенческими работами здесь

Char это что и приведите пример к коду
char это что и приведите пример к коду int strrpos(string $where, char $what ) Данная функция похожа strpos() , но несет несколько...

Php+Html!? как кнопке определить в событие по клику фун-цию php!? синтаксис любой пример приведите
по клику на кнопке обычной а вообще мне надо стереть один файл просто по клику, вот сижу и думаю как же это все будет выглядеть.

Простой пример метода ajax
Здравствуйте! Нужна ваша помощь. Только начала изучать метод метод ajax. Разобранный пример в интернете поняла хотела бы его немного...

Простой пошаговый пример Yii2
Бонжур месье и мадам! Кто б помог ссылкой на простой пошаговый пример создания элементарной вещи на Yii2. Или быть может недолго...

Простой пример использования базы данных
Здравствуйте. Скиньте пожалуйста ссылки или готовые примеры для использование базы данных. Так как ни разу не нуждался ранее базе данных,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru