network.http.Http->request バグ


2008-6-28追記
この記事ミスってましたorz
書き直したのはこちら



Browser->get() 取得したコンテンツのマルチバイトが部分的に化けるので、Transfer-Encoding: chunked の処理を直してみた。

rhaco/network/http/Http.php(rev3184/3235)

class Http{
    /**
     * リクエストを発行する
     *
     * @param string $url
     * @param string $method
     * @param array $headers
     * @param int $timeout
     * @param int $blocking
     * @return array
     */
    function request($url,$method="GET",$headers=array(),$timeout=5,$blocking=1){
:
            }else if(preg_match("/Transfer\-Encoding:[\s]+chunked/i",$header)){
                while(!feof($fp)){
                    $bytes = fgets($fp,4096);

//                  if(preg_match("/^([0-9a-fA-F]+)[\s\r\n]*$/",$bytes,$match)){
                    if(preg_match("/^([0-9a-fA-F]+)\r\n$/",$bytes,$match)){
                    $size = hexdec($match[1]);
                        if($size <= 0) break;

                        $body .= fread($fp,$size);
//                  }else if(!preg_match("/^[\r\n]+$/",$bytes)){
                    }else if(!preg_match("/^\r\n$/",$bytes)){
                        $body .= $bytes;
                    }
                }
            }else{