php-正規表現で処理できるように、cURLでキリル文字を返すようにするにはどうすればよいですか?
HTMLページ全体を引き出すcURLを作成しましたが、そのページにキリル文字があり、表示されないか、すべてこのように見えます����������。正規表現を使用してページの特定の部分をキャプチャしたいのですが、キリル文字を読めないとそれができません。
では、cURLで使用できるキリル文字を返すにはどうすればよいですか。
これは私のcURLです:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, '$post');
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIES_DIR.'$cookie_path');
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIES_DIR.'$cookie_path');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);
ある種のcURLオプションを設定する必要があると思いますが、それが何であるかわかりません。
答え :
解決策:
次のようなものを追加する必要がありますか:curl_setopt($ ch、CURLOPT_HTTPHEADER、array( "Content-Type:text / html; charset = windows-1251"));これでいいですか?
CURLには関係ありません、コンテンツを解釈しません。
その文字列に対して正規表現を実行する場合は、入力された正規表現が同じ文字セットに含まれていることを確認してください。応答のエンコーディングを変更してこれを行うことをお勧めします:
$w1251 = $reponse; $utf8 = mb_convert_encoding($w1251, "UTF-8", "Windows-1251 (CP1251)");
PHPソースコードファイルもUTF-8である場合、特殊文字はすべてうまく一致するはずです。
または、ソースコードの文字セットを変更することもできますが、誰かが誤って変換する可能性があるため、お勧めしません。
同様に、(HTMLページに)テキストを表示するときは、文字セットがコンテンツの文字セットと一致していることを確認してください。
w1251コンテンツを表示したい場合は、同様の
meta
タグを追加すると、文字が正しく表示されます。文字列をutf-8に変換し、utf-8のmetaタグを追加することもできます。
答え :
解決策:
次のヘッダーを試してください
$ch = curl_init();
$header[] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[] = "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8";
$header[] = "Accept-Charset: windows-1251, *;q=0.1";
$header[] = "Accept-Encoding: deflate, identity, *;q=0";
$header[] = "Pragma: "; //browsers keep this blank.
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。