Делаю граббер анаграмм для одного сайта. Чтобы, так сказать, быстрее расшифровывать в игровом чате. Постер чата работает, анаграммы грабит без проблем. Проблема возникает в их расшифровке, когда я подключаюсь к сайту расшифровки через cURL и получаю готовый результат. Сначала хотел взять сайт из первой строчки поиска: http://4maf.ru/anagram.php, но он работает через ajax, передает туеву хучу переменных, поэтому выбрал попроще: http://anagramizer.com/find-anagram . Этот сайт передает данные через GET и выводит готовый результат. Пример: http://anagramizer.com/find-anagram?word=рпивте Тут-то и скрывается проблема. Вот участок кода, который отправляет данные на этот сайт через GET: Код (Text): $anasite = "http://anagramizer.com/find-anagram?word=".$anagramm; echo "$anasite<hr/>"; if( $curl = curl_init() ) { // CURL anagramm curl_setopt($curl, CURLOPT_URL, $anasite); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); $page3 = iconv("utf-8", "cp1251", curl_exec($curl)); curl_close($curl); echo $page3; } else { // CURL anagramm echo "Cant curl"; } // CURL anagramm Вот результат ее работы: Как видите, данные будто не передаются... Почему так происходит и как это решить? P.S. urlencode() для слова пробовал, не работает. P.P.S. Кстати, не буду против, если кто сможет грабить расшифровку с http://4maf.ru/anagram.php
Код (PHP): function get_anagram($word){ $url = 'http://4maf.ru/anagram_ajax.php'; $query_data = "sourceword=$word&ModType=1&minf=0&yo=1"; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, true); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); curl_setopt($ch,CURLOPT_POSTFIELDS, $query_data); $result = curl_exec($ch); curl_close($ch); return $result; } echo get_anagram('рпивте'); Остальное сам сделай. Добавлено спустя 8 минут 48 секунд: 4 это так много?
Очень много говнокода. Будьте аккуратны Код (Text): <?php function get_anagram($word){ $url = 'http://4maf.ru/anagram_ajax.php'; $query_data = "sourceword=$word&ModType=1&minf=0&yo=1"; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, true); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); curl_setopt($ch,CURLOPT_POSTFIELDS, $query_data); $result = iconv("utf-8", "cp1251", curl_exec($ch)); curl_close($ch); return $result; } set_time_limit(0); require_once("simple_html_dom.php"); $sessa = "SESS=3m94k30a2uhr6b6s7dgvv7k6u0"; $pass = "%80%B0%B2%E3%5C2w%7D%C7%CCI%F4"; $rooms = "http://foiz.ru/chat/"; if($curl = curl_init()) { // CURL curl_setopt($curl, CURLOPT_URL, $rooms); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($curl, CURLOPT_COOKIE, "id_user=17321;pass=".$pass.";".$sessa); $page = iconv("utf-8", "cp1251", curl_exec($curl)); curl_close($curl); if ($page){ // PAGE $html = str_get_html($page); foreach($html->find('a[href*=room\/14\/]') as $href) { $room = $href->href; } $html->clear(); unset($html); $room = "http://foiz.ru" . $room; if($curl = curl_init()) { // CURL room curl_setopt($curl, CURLOPT_URL, $room); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($curl, CURLOPT_COOKIE, "id_user=17321;pass=".$pass.";".$sessa); $page2 = iconv("utf-8", "cp1251", curl_exec($curl)); curl_close($curl); $html = str_get_html($page2); $n = 0; foreach($html->find('div[class=rowdown]') as $div) { // foreach if ($n == 0){ // n $data = $div->innertext; $mystring = $data; $findme = "<strong>Анаграмма:</strong> "; $pos = strpos($mystring, $findme); if ($pos === false) { // pos echo <<<EOD <title>Не найдено</title> Этот пост не является анаграммой <meta http-equiv="refresh" content="3"> EOD; } else { // pos $data = str_replace("<span style=\"color:\"> ","",$data); $data = str_replace("<strong>Анаграмма:</strong> ","",$data); $data = str_replace("</span>","",$data); $data = str_replace("<br />","",$data); $dataArr = explode(" ",$data); $anagramm = $dataArr[2]; echo <<<EOD <title>Найдено</title> <b>НАЙДЕНА АНАГРАММА:</b> $anagramm<hr/> EOD; echo get_anagram($anagramm); } // pos $n++; } // n } // foreach $html->clear(); unset($html); } else { // CURL room echo "Cant cURL\n"; } // CURL room } else { // PAGE echo "no page\n"; } // PAGE } else { // CURL echo "Cant cURL\n"; } // CURL ?> Добавлено спустя 23 минуты 19 секунд: Даже в отдельный файл поместил - тот же результат...
Ну не может быть что бы у меня и у imoisey работал код а у тебя нет. Проверь что ты отправляешь.Раз пишется значить посылаешь что то лишнее.
Добавлено спустя 1 минуту 41 секунду: Вообще ничего лишнего.. Взял Вашу функцию, отправляю в нее переменную $anagramm. Больше ничего Добавлено спустя 1 минуту 3 секунды: Проверьте точно ВАШИ коды.. Может Вы чего там добавили...
и что ты хотел сказать? Если честно я могу целый день гадать как ты копируешь что ты делаешь. Мне сложно представить как надо скопировать что бы этот код не заработал. У меня пока нет идей почему у тебя не работает, может у других телепатия лучше развита... Добавлено спустя 1 минуту 30 секунд: Наши коды и днк в полном порядке. Проверено годами
Ну не знаю создай отдельный файл php UTF-8 без BOM скопируй то что я дал, вызови файл. Вот и вся магия. Если не заработает будем ждать imoisey пусть он расскажет свою уникальную технику копирования.
ПЕРЕСОХРАНЕНИЕ В UTF-8 ПОМОГЛО! Добавлено спустя 3 минуты 20 секунд: Всё, разобрался. Нужно было только слово в utf-8 преобразовать...
Выстави в IDE или редакторе где ты пишешь кодировку по дефолту UTF-8 без BOM. Много гемора с кодировками исчезнет.