2015-07-25 2 views
1

Здесь я пытаюсь лома данных из Интернета (в URL), который находится в Hindi, но я получаю ответ, как этоткак металлолом хинди текст из Интернета с помощью PHP

\ u093f \ u0938 \

Как декодировать этот юникод? Пожалуйста, предложите мне, что делать с моим скриптом на PHP.

Этот скрипт работает правильно с английским текстом, так что происходит с английским. Я уже скрепил данные с этим скриптом. Я знаю, что это ответ dev nagri unicode, но как его декодировать.

Я новичок в PHP проблемы заранее спасибо

$i= 1; 
for($i; $i < 6; $i++) 
{ 
    $html file_get_contents("http://www.jagran.com/jokes/child/jokes-1262211".$i.".html"); 
    libxml_use_internal_errors(true); 
    $dom = new DOMDocument(); 
    $dom->loadHTML($html); 
    libxml_clear_errors(); 
    $nodes = $dom->getElementsByTagName('p'); 
    $item = array(); 
    $articles = array(); 
    foreach ($nodes as $node) { 
     $item['msg'] = (strlen($node->nodeValue) > 20 ? $node->nodeValue : ''); 
     $item['cat_id'] = 1; 
     if($item['msg'] !="") 
     $articles[] = array_unique($item); 
    } 
    $articles = json_encode($articles); 
    print_r($articles); 
} 
+0

Место в заголовке user1844933

+0

Этот ответ является _not_ юникода, что именно ваша проблема. Он экранирован, поскольку транспортный уровень или какой-либо другой элемент использует другую кодировку. Может ли быть, что ваша собственная система не поддерживает загрузку и настройку многобайтового расширения phps? – arkascha

+0

@ arkascha это код devnagri для слов хинди – mishraoft

ответ

0

Я думаю ответ PHPhil «s хорошо, и я upvoted его. Я отредактировал код, так как он не работает только для выполнения части php. Вместо этого важно добавить правильный метатег (см. Код ниже), чтобы правильно показать devnagari. Также я хотел исправить ошибку с отсутствующим «=». К сожалению, мое редактирование было отклонено, поэтому я должен добавить новый ответ с исправлениями кода.

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
<body> 
<?php 

$i= 1; 
for($i; $i < 6; $i++) 
{ 
    $html = file_get_contents("http://www.jagran.com/jokes/child/jokes-1262211".$i.".html"); 
    libxml_use_internal_errors(true); 
    $dom = new DOMDocument(); 
    $dom->loadHTML($html); 
    libxml_clear_errors(); 
    $nodes = $dom->getElementsByTagName('p'); 
    $item = array(); 
    $articles = array(); 
    foreach ($nodes as $node) { 
     $item['msg'] = (strlen($node->nodeValue) > 20 ? $node->nodeValue : ''); 
     $item['cat_id'] = 1; 
     if($item['msg'] !="") 
     $articles[] = array_unique($item); 
    } 
    $articles = json_encode($articles, JSON_UNESCAPED_UNICODE); 
//--------------------add-this---------------------^ 
    print_r($articles); 
} 
?> 
</body> 
</html> 
+0

Многое спасибо @NilsB :) – mishraoft

0

Вы очень близки. Вы получаете знаки: ि и स

Во-первых, вы можете попробовать это Google для персонажа, и вы найдете Деванагари смысл символов:

https://www.google.de/#q=%5Cu093f

https://www.google.de/#q=%5Cu0938

если вы хотите show unicode в html вам нужно изменить кодировку с/uна & # x123. Смотрите здесь:

<html> 
<body> 
<p>These are two chars in devnagari &#x93f;&#x938;<p> 
</body> 
</html> 

Но, как вы хотели, чтобы скоблить хинди, вы должны начать изучать, как читать и обрабатывать Юникод. Следующий вопрос: как вы хотите обрабатывать результат.

1

Если вы используете PHP 5.4 или выше, передайте параметр JSON_UNESCAPED_UNICODE при вызове json_encode.

$i= 1; 
for($i; $i < 6; $i++) 
{ 
    $html file_get_contents("http://www.jagran.com/jokes/child/jokes-1262211".$i.".html"); 
    libxml_use_internal_errors(true); 
    $dom = new DOMDocument(); 
    $dom->loadHTML($html); 
    libxml_clear_errors(); 
    $nodes = $dom->getElementsByTagName('p'); 
    $item = array(); 
    $articles = array(); 
    foreach ($nodes as $node) { 
     $item['msg'] = (strlen($node->nodeValue) > 20 ? $node->nodeValue : ''); 
     $item['cat_id'] = 1; 
     if($item['msg'] !="") 
     $articles[] = array_unique($item); 
    } 
    $articles = json_encode($articles, JSON_UNESCAPED_UNICODE); 
//--------------------add-this---------------------^ 
    print_r($articles); 
}