Результат от запроса URL, возвращающего странные символы вместо акцентов

Моя проблема в том, что акценты не отображаются на выходе print_r(),

Вот мой код:

<?php
include('./lib/simple_html_dom.php');
error_reporting(E_ALL);
if (isset($_GET['q'])){
$q = $_GET['q'];
$keyword=urlencode($q);
$url="https://www.google.com/search?q=$keyword";
$html=file_get_html($url);
$results=$html->find('li.g');
$G_tot = sizeof($results)-1;
for($g=0;$g<=$G_tot;$g++){
$results=$html->find('li.g',$g);
$array_ttl_google[]=$results->find('h3.r',0)->plaintext;
$array_desc_google[]=$results->find('span.st',0)->plaintext;
$array_href_google[]=$results->find('cite',0)->plaintext;
}
print_r($array_desc_google);
}
?>

Вот результат print_r:

Array ( [0] => �t� m (plural �t�s)...

Какое разрешение на ваш взгляд?

0

Решение

3 основных вещи, которые вы можете сделать:

  1. Установите кодировку страницы в UTF-8 — добавьте в самом начале вашей страницы: header('Content-Type: text/html; charset=utf-8');
  2. Убедитесь, что ваш файл кода сохранен как UTF-8 (без спецификации).
  3. Добавьте функцию для перевода проанализированной строки в UTF-8 (в случае, если некоторые другие сайты используют другие кодировки)

Ваш код должен выглядеть примерно так (протестировано — отлично работает, пробовал с английским и ивритом):

 <?php
header('Content-Type: text/html; charset=utf-8');

include('simple_html_dom.php');
error_reporting(0);
if (isset($_GET['q'])){
$q = $_GET['q'];
$keyword=urlencode($q);
$url="https://www.google.com/search?q=$keyword";
$html=file_get_html($url);

//Make sure we received UTF-8:
$encoding = @mb_detect_encoding($html);
if ($encoding && strtoupper($encoding) != "UTF-8")
$html = @iconv($encoding, "utf-8//TRANSLIT//IGNORE", $html);

//Proceed with your code:
$results=$html->find('li.g');
$G_tot = sizeof($results)-1;
for($g=0;$g<=$G_tot;$g++){
$results=$html->find('li.g',$g);
$array_ttl_google[]= $results->find('h3.r',0)->plaintext;
$array_desc_google[]= $results->find('span.st',0)->plaintext;
$array_href_google[] = $results->find('cite',0)->plaintext;
}
print_r($array_desc_google);
} else {
echo "You forgot to set the 'q' variable in your url.";
}
?>
0

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

Других решений пока нет …

По вопросам рекламы [email protected]