0

ペルシャ語のページのコンテンツを取得し、そのページの一部を一部のユーザーに表示する必要があります。問題は、ページ コンテンツをフィルタリングした後、適切なエンコーディングでコンテンツを表示できないことです。Web ページは sena.ir にあります。表示したい元の Web ページ部分のスクリーン ショットを次に示します。

代替テキスト http://img502.imageshack.us/img502/983/original.gif

そして、ここに私が得たものがあります:

代替テキスト http://www.freeimagehosting.net/uploads/812cebe6b3.gif

ページのコンテンツを取得するために使用する関数は次のとおりです。

function getPage($url, $referer="", $timeout="", $header=""){
    if(!isset($timeout))
        $timeout=30;
    $curl = curl_init();
    if(strstr($referer,"://")){
        curl_setopt ($curl, CURLOPT_REFERER, $referer);
    }

    $headers [] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';
    $headers [] = 'Connection: Keep-Alive';
    $headers [] = 'Content-type: application/x-www-form-urlencoded;charset=utf-8 '; // I Tried iso-..... as well but no chance
    $user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';
    $compression = "gzip";

    curl_setopt ($curl, CURLOPT_HTTPHEADER, $headers );
    curl_setopt ($curl, CURLOPT_HEADER, 0 );
    curl_setopt ($curl, CURLOPT_USERAGENT, $user_agent );
    curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1 );
    curl_setopt ($curl, CURLOPT_POST, 0 );
    curl_setopt ($curl, CURLOPT_ENCODING, $compression );
    curl_setopt ($curl, CURLOPT_TIMEOUT, 300 );
    curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0 );
    curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0 );

    curl_setopt ($curl, CURLOPT_URL, $url);
    $html = curl_exec ($curl);
    curl_close ($curl);
    return $html;
}

$content = getPage("http://sena.ir/");
$p1 = strpos($content,'<TABLE cellSpacing="3" cellPadding="3" width="100%" border="0">');
$p2 = strpos($content,"</TABLE>",$p1);
$content = substr($content, $p1, $p2-$p1);
echo $content;
4

1 に答える 1

0

データは問題ではありませんでした。出力が問題でした。プロキシのような関数は html のヘッダーとエンコード宣言を削除するため、フィルタリングされたデータを出力する前に、次の行を追加する必要があります。

<html lang="fa"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
于 2009-12-01T00:09:08.943 に答える