нужно: 1) скачать страничку, в которой будет адрес сайта, распарсить его (узнать домен и path) делаю так: PHP: $url=get_page('test1.ru',"/777/server.php?parse_url=http://test1.ru/777/index.php");$url=urldecode(trim($url)); // показывает: http://test1.ru/asterix-and-obelix//$url = str_replace(array("\r\n", "\r", "\n"), '', $url); //не помоглоvar_dump(parse_url($url)); выводит: в чем может быть проблема? Есть подозрение что туда заносятся каких-то 2 невидимых символа Если вставлять эту ссылку в переменную вручную , то все норм, но когда она формируется через функцию - не работает, хотя с виду, она нормальная. Качаю странички через PHP: function get_page($site,$page){$isheaders=false;$page=trim($page);$site=trim($site);$socket = fsockopen($site, 80, $errno, $errstr, 15);if ($socket){ $send = "GET $page HTTP/1.0\r\n"; $send .= "User-Agent: Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)\r\n"; $send .= "Host: $site\r\n"; $send .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"; $send .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n"; $send .= "Connection: close\r\n\r\n".$post; if(fputs($socket,$send)) { if(!$isheaders) while(fgets($socket,1024)!="\r\n" && !feof($socket)); $he=""; while(!feof($socket)) $he.=fread($socket,10240); }; fclose($socket);}return $he;};
Хз что у вас там показывает у меня вот как, код поправил для удобства вызова: Code: $url=get_page('test1.ru',"/777/index.php"); $url=urldecode(trim($url)); // показывает: http://test1.ru/asterix-and-obelix //$url = str_replace(array("\r\n", "\r", "\n"), '', $url); //не помогло var_dump(parse_url($url)); в index.php положил одну строчку "http://test1.ru/asterix-and-obelix" вывод получился такой: от себя добавлю, зачем тут $url=urldecode(trim($url)); используите trim когда оно уже используется в функции P.S: полностью рабочий скрипт: PHP: $url=get_page('test1.ru',"/777/index.php");$url=urldecode($url);var_dump(parse_url($url));function get_page($site,$page){$isheaders=false;$page=trim($page);$site=trim($site);$socket = fsockopen($site, 80, $errno, $errstr, 15);if ($socket){ $send = "GET $page HTTP/1.0\r\n"; $send .= "User-Agent: Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)\r\n"; $send .= "Host: $site\r\n"; $send .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"; $send .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n"; $send .= "Connection: close\r\n\r\n".$post; if(fputs($socket,$send)) { if(!$isheaders) while(fgets($socket,1024)!="\r\n" && !feof($socket)); $he=""; while(!feof($socket)) $he.=fread($socket,10240); }; fclose($socket);}return $he;};
Если просто парсить строчку из переменной - все ок. А вот когда я ее получаю с БД через GET, начинаются какие-то чудеса. думаю проблема в этом, но не могу понять в чем именно На "глаз" - все ок, никаких отклонений нету.