ArhStrAngeR,какой из них лучше читать?![]()
- 13.09.2012 00:27
- 13.09.2012 00:39Разработка любых сайтов


- Регистрация: 08.06.2011
- Сообщений: 3,375
- Записей в дневнике: 1
- Репутация: 2506
denis35,любой достаточно хорош. проще изучать на примере - задумал что-то писать, поставил задачу, написал, не работает - гуглишь, работает - смотришь что можно изменить, улучшить и т.д.
Спасибо сказали:
Alik(15.09.2012), - 15.09.2012 17:11Опытный

- Регистрация: 27.02.2011
- Сообщений: 386
- Репутация: 68
Именно в точку. С этого нужно начинать.
Как то решил я вникнуть в php, прочитал пару сотен страниц, ничего собственно не понял.
Пару дней назад остро встала потребность в написании скрипта, который парсит количество исходящих ссылок с донора по бингу. Начал искать просто парсеры выдачи и т.п. Изучил, посмотрел, начал делать, составил последовательность действий, что да как. Например: 1) отправить через пост урл 2) курлом загрузить страницу 3) распарсить 4) все воткнуть в цикл и т.д.
В итоге пока делал пришлось прочитать информацию про cURL, про массивы, циклы, переборы массивов, типы данных, регулярные выражения + еще по мелочи. Вся информация сразу же применялась на практике. В итоге всего около 40 строчек кода, а мозго#бки почти 2е суток.
Зато за 2 дня написания этих строчек получил колоссальный опыт + хорошо структурированную информацию по разным разделам php.
Сегодня за пару часов написал парсер торентов рутрекера.
.
Заказывал давно PHP 5 в подлиннике Котеров, Костарев. Книга великолепная.Спасибо сказали:
ArhStrAngeR(16.09.2012), - 16.09.2012 00:07Разработка любых сайтов


- Регистрация: 08.06.2011
- Сообщений: 3,375
- Записей в дневнике: 1
- Репутация: 2506
Кстати хорошая идея. Можно выкладывать в этой темы простые уроки, типо парсера и подробно разбирать построчно. Глядишь и вопросов станет меньше.
- 16.09.2012 01:23Опытный

- Регистрация: 27.02.2011
- Сообщений: 386
- Репутация: 68
Ребят где косяк? Почему обрабатывается только последний элемент массива?
Т.е. если формой будет отправлено более одного элемента, то парсинг произойдет только последнего отправленного элемента, а элемент вышестоящего элемента вернет пустоту.PHP код:<?php
if(isset($_POST['cat']) && !empty($_POST['cat']))
$cat = $_POST;
else
die('cat parameter is not specified!');
set_time_limit(0);
$do=explode("\n",$_POST['cat']);
function get_web_page( $url )
{
$uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу
curl_setopt($ch, CURLOPT_HEADER, 0); // не возвращает заголовки
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // переходит по редиректам
curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывает все кодировки
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // останавливаться после 10-ого редиректа
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}
for ($i=0; $i<count($do); $i++) {
$url = $do[$i];
echo "Беру $do[$i]<br />";
$result = get_web_page( $url );
$err = 0;
if ( $result['errno'] != 0 )
{ //... ошибка: неправильный url, таймаут, зацикливание ... обработать по желанию
$err = 1;
}
if ( $result['http_code'] != 200 )
{ //... ошибка: нет страницы, нет прав ... обработать по желанию
$err = 1;
}
$page = $result['content'];
$page = str_replace ("<wbr>","",$page);
$page = str_replace ('" class="topictitle tt-text',"",$page);
$page = str_replace ('./viewtopic.php?t',"/forum/viewtopic.php?t",$page);
$template ='#<td style="padding: 3px 5px 3px 3px;" class="tt">[\n\s]+<a\shref="?(.*?)"?>(.*?)<\/a>[\n\s]+<\/td>#im';
preg_match_all($template, $page, $matches);
// for ($k=0; $k<count($matches[1]); $k++){
// print_r('<br />'.$matches[1][$k]);
// }
print_r($matches);
}
?> - 16.09.2012 03:16
Элемент формы которая приносит
PHP код:- это textarea?$_POST['cat']
Зачем в третей строке:PHP код:После$cat = $_POST;
PHP код:если проследить например$do=explode("\n",$_POST['cat']);
PHP код:адекватный ли массив эксплоудится? Возможно стоит попробовать:print_r ($do);
PHP код:... explode("[\r?\n]",$_POST['cat']) ...
Последний раз редактировалось aidem; 16.09.2012 в 03:19.
- 16.09.2012 03:31Опытный

- Регистрация: 27.02.2011
- Сообщений: 386
- Репутация: 68
да
да ненужная вещь, шапку оставил с другого скрипта
адекватный, типа:PHP код:не канает, даже парсинг не происходит.Array ( [0] => /forum/viewforum.php?f=2006 [1] => /forum/viewforum.php?f=751 [2] => /forum/viewforum.php?f=257 )
- 16.09.2012 03:39
- 16.09.2012 03:43Опытный

- Регистрация: 27.02.2011
- Сообщений: 386
- Репутация: 68
aidem, ммм, как бы $url уже является урлом (пример: http://webmasters.ru/forum/f74)
- 16.09.2012 03:48
Тэги топика:
Похожие темы
| Темы | Раздел | Ответов | Последний пост |
|---|---|---|---|
Веб программирование на Php, MySQL, Ajax. Программирование на C# | Создание сайтов | 3 | 31.05.2011 02:53 |
Веб программирование на Php, MySQL, Ajax. Программирование на C# | Реклама партнерских программ | 3 | 31.05.2011 02:53 |
Качественное программирование на заказ | Создание сайтов | 2 | 13.09.2010 17:02 |
Веб-программирование [php, Xhtml, Css, Javascript] | Другая работа | 0 | 28.02.2010 23:10 |






