Как заставить cURL возвращать символы кириллицы таким образом, чтобы я мог обрабатывать их с помощью регулярных выражений?

Я написал некоторый cURL, который вытаскивает целую HTML-страницу, однако на этой странице есть кириллические символы, и они не отображаются или, скорее, все они выглядят так . Я хочу использовать регулярные выражения для захвата определенных частей страницы, но я не могу сделать это, не имея возможности читать кириллицу.

Итак, как мне заставить 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, но я не знаю, что это такое.

0

Решение

Должен ли я добавить что-то вроде этого: 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.

1

Другие решения

Попробуйте следующие заголовки

$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);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector