2015-08-14 47 views
0

我想通過cURL從this page獲取內容。cURL字體編碼 - 錯誤

這裏是我的代碼:

$url = $_GET["url"]; 
$url = str_replace(" ", "%20", $url); 
$curlSession = curl_init(); 
curl_setopt($curlSession, CURLOPT_URL, $url); 
curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true); 
$jsonData = curl_exec($curlSession); 
curl_close($curlSession); 
if (strpos($url, "toomva.com") >= 0) { 
    $jsonData = str_replace("toomva.com", "http://av.bsquochoai.ga ⇔ ", $jsonData); 
} 
if (strpos($url, "Toomva -") >= 0){ 
    $jsonData = str_replace("toomva.com", "http://av.bsquochoai.ga ⇔ ", $jsonData); 
} 
echo($jsonData); 

Here你可以找到一個現場演示。

我的問題是,返回的文本不是我所期望的。它有很多的:

1 00:00:24,400 - - > 0 0 : 0 0 : 3 3 , 1 4 0 M i t r n g t h y k h u n m t e m , t h g i a n n y n h

你能幫我解決嗎?

回答

0

使用函數utf8_encode當您迴應你的jsonDate:

echo(utf8_encode($jsonData)); 
1

這裏有你想要訪問的文件的前幾個字節:

$ curl -s 'http://toomva.com/Data/subtitle/Duncan%20James%20ft.%20Keedie%20-%20I%20Believe%20My%20Heart.Vie_Syned.srt' | xxd | head 
0000000: fffe 3100 0d00 0a00 3000 3000 3a00 3000 ..1.....0.0.:.0. 
0000010: 3000 3a00 3200 3400 2c00 3400 3000 3000 0.:.2.4.,.4.0.0. 
0000020: 2000 2d00 2d00 3e00 2000 3000 3000 3a00 .-.-.>. .0.0.:. 
0000030: 3000 3000 3a00 3300 3300 2c00 3100 3400 0.0.:.3.3.,.1.4. 
0000040: 3000 0d00 0a00 4d00 d71e 6900 2000 6b00 0.....M...i. .k. 
0000050: 6800 6900 2000 6100 6e00 6800 2000 7400 h.i. .a.n.h. .t. 
0000060: 7200 f400 6e00 6700 2000 7400 6800 a51e r...n.g. .t.h... 
0000070: 7900 2000 6b00 6800 7500 f400 6e00 2000 y. .k.h.u...n. . 
0000080: 6d00 b71e 7400 2000 6500 6d00 2c00 2000 m...t. .e.m.,. . 
0000090: 7400 6800 bf1e 2000 6700 6900 6100 6e00 t.h... .g.i.a.n. 

它始於0xff 0xfe,這是用於UTF-16 Little Endian的byte order mark。這些信息應該在文件的HTTP標頭中提供,但顯然不是這種情況。

您可以使用PHP的mb_convert_encoding()函數將文件的內容更改爲您用於網站的任何字符集。例如,這會將其轉換爲utf-8:

$src = file_get_contents('http://toomva.com/Data/subtitle/Duncan%20James%20ft.%20Keedie%20-%20I%20Believe%20My%20Heart.Vie_Syned.srt'); 
$utf8src = mb_convert_encoding($src,'UTF-8','UTF-16LE'); 
header('Content-Type: text/plain; charset=utf-8'); 
die($utf8src); 

但是,該文件不包含JSON數據。以下是前幾行:

1 
00:00:24,400 --> 00:00:33,140 
Mỗi khi anh trông thấy khuôn mặt em, thế gian này như chợt tan biến 

2 
00:00:33,140 --> 00:00:42,700 
Tất cả đều phơi bày trong một ánh nhìn thoáng qua