![](https://forum.clientbase.ru/public/style_images/master/icon_users.png)
![](https://forum.clientbase.ru/public/style_images/master/profile/default_large.png)
Сообщений в теме: 8
#1
Отправлено 12 Июнь 2015 - 01:44
Добрый день, имеется внешняя форма к таблице. хочется сделать так, чтобы при вставке в поле ссылки на сайт, дальнейшие поля отсортировывались в зависимости от текста, который находится на странице ссылки. Например, с помощью данного кода находится нужный текст на сайте: $('#column_right h1').text().
Как сделать так, чтобы Клиентская база через внешнюю форму проходила по введенному адресу и применяла данный код?
Заранее спасибо. Возможно ли это?
Как сделать так, чтобы Клиентская база через внешнюю форму проходила по введенному адресу и применяла данный код?
Заранее спасибо. Возможно ли это?
#2
Отправлено 12 Июнь 2015 - 13:50
Возможно. Для этого необходимо использовать программный эмулятор браузера, т.е. считывать удаленную страницу через код. Затем уже помещаете результат в текстовую переменную и производите с ней стандартные действия, такие как парсинг содержимого, поиск нужного фрагмента текста и т.д. Подключится и получить страницу можно разными средствами, например через cUrl, или используя класс snoopy (уже подключен в программе).
#3
Отправлено 12 Июнь 2015 - 23:22
CbCoder (12 Июнь 2015 - 13:50) писал:
Возможно. Для этого необходимо использовать программный эмулятор браузера, т.е. считывать удаленную страницу через код. Затем уже помещаете результат в текстовую переменную и производите с ней стандартные действия, такие как парсинг содержимого, поиск нужного фрагмента текста и т.д. Подключится и получить страницу можно разными средствами, например через cUrl, или используя класс snoopy (уже подключен в программе).
Благодарю за то, что указали направление в котором стоит двигаться. Так вот, решил попробовать реализовать через curl, почитав форумы и манулы, решил взять за основу следующий код:
// Инициализируем курл
$ch = curl_init('адрес страницы донора');
// Параметры курла
curl_setopt($ch, CURLOPT_USERAGENT, 'IE20');
curl_setopt($ch, CURLOPT_HEADER, 0);
// Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экран
curl_setopt($ch, CURLOPT_RETURNTRANSFER, '1');
// Получаем html
$text = curl_exec($ch);
// Отключаемся
curl_close($ch);
// Находим и сохраняем нужный фрагмент
preg_match( '/<ul><li>(.*?)<\/li><\/ul>/is' , $text , $links );
// Выводим результат на экран
echo $links[0];
Путем рассуждений (неосложненных опытом и знаниями) у меня получился следующий код, но он не работает((( Прошу помощи, где моя ошибка, как сделать, чтобы работало?:
// // Инициализируем курл
$ch = curl_init('http://www.gutewetter.ru/catalogue/dushevye-ograzhdeniya/'); сайт с которого требуется взять текст
// Параметры курла
curl_setopt($ch, CURLOPT_USERAGENT, 'IE20');
curl_setopt($ch, CURLOPT_HEADER, 0);
// Следующая опция необходима для того, чтобы функция curl_exec() возвращала значение а не выводила содержимое переменной на экран
curl_setopt($ch, CURLOPT_RETURNTRANSFER, '1');
// Получаем html
$text = curl_exec($ch);
// Отключаемся
curl_close($ch);
// Находим и сохраняем нужный фрагмент
preg_match( $('#column_right h1').text() , $text , $links ); \\ $('#column_right h1').text() - парсинг указанной ранее страницы. (нахождение нужного текста)
// Заносим результат в переменную из КБ
$line['ТЕСТ']=$text; //строка из таблицы, к которой применяется данное вычисление. Ее я использую для отладки полученного результата.
#4
Отправлено 13 Июнь 2015 - 15:50
А в каком именно месте то не работает? В переменной $text есть что-нибудь? Если нет, то значит ошибка считывания, смотрите curl_error.
#5
Отправлено 14 Июнь 2015 - 22:25
CbCoder (13 Июнь 2015 - 15:50) писал:
А в каком именно месте то не работает? В переменной $text есть что-нибудь? Если нет, то значит ошибка считывания, смотрите curl_error.
Изменил строку, убрал внешние скобки:
preg_match $('#column_right h1').text() , $text , $links ; // $('#column_right h1').text() - парсинг указанной ранее страницы. (нахождение нужного текста).
выдает ошибку: 39: // Находим и сохраняем нужный фрагмент
40:preg_match $('#column_right h1').text() , $text , $links ; // $('#column_right h1').text() - парсинг указанной ранее страницы. (нахождение нужного текста)
41:
syntax error, unexpected '$'
Что надо сделать, чтобы исправить?
по поводу переменной $text, дописал строку $text=''; - не ругается. но, как видно, дело не в ней
Сообщение отредактировал Marid: 14 Июнь 2015 - 22:28
#6
Отправлено 15 Июнь 2015 - 09:08
Погодите, а что у вас в PHP делает функция из jQuery? Вообще-то, jQuery - это библиотека для JS, а не для PHP. Разумеется будет ошибка синтаксиса.
#7
Отправлено 16 Июнь 2015 - 14:13
CbCoder (15 Июнь 2015 - 09:08) писал:
Погодите, а что у вас в PHP делает функция из jQuery? Вообще-то, jQuery - это библиотека для JS, а не для PHP. Разумеется будет ошибка синтаксиса.
Понял, благодарю. Тогда как именно стоит реализовывать парсинг? как реализовать то же самое средствами php? Если можно, то на примере кода)
#8
Отправлено 16 Июнь 2015 - 17:03
Marid (16 Июнь 2015 - 14:13) писал:
Понял, благодарю. Тогда как именно стоит реализовывать парсинг? как реализовать то же самое средствами php? Если можно, то на примере кода)
http://phphack.ru/catalog/parsers/
#9
Отправлено 17 Июнь 2015 - 00:04
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных