2015-04-04 98 views
1

當我使用cURL來獲取網站,並對結果做strlen()時,我得到72354.但是,當我通過htmlspecialchars()傳遞結果,然後執行strlen()時,我得到0。有任何想法嗎?這裏是我的代碼:htmlspecialchars不能在字符串上工作

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/search?q=test'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 1); 

$result = curl_exec($ch); 
echo strlen($result); 
echo '<br>'; 
echo strlen(htmlspecialchars($result)); 
+3

*如果輸入字符串包含給定的編碼一個空字符串中的無效編碼單元序列將被退回,除非是ENT_IGNORE或ENT_SUBSTITUTE標誌設置。 * – adeneo 2015-04-04 06:08:41

回答

2

嘗試

<?php 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/search?q=test'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 1); 

$result = curl_exec($ch); 
echo strlen($result); 
echo '<br>'; 
echo strlen(htmlspecialchars($result, ENT_QUOTES)); 
echo '<br>'; 
echo htmlspecialchars($result, ENT_COMPAT,'ISO-8859-1', true); 

?> 
+1

我的瀏覽器似乎認爲谷歌使用UTF8? – adeneo 2015-04-04 06:21:20

+0

@adeno取決於請求。或者更好的瀏覽器設置。 – arkascha 2015-04-04 06:24:51