2011-01-19 113 views
1

我有以下PHP(版本5.3.0)代碼:

$URL = "http://www.example.com/"; 

IF ($URL != "") 
try { 
    $curl = curl_init(); 
    curl_setopt ($curl, CURLOPT_URL, $URL); 
    curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true); 
    $html = curl_exec ($curl); 

    $array = str_split($html); 

    for ($i=0;$i<20;$i++) echo $array[$i]," "; 

} 
catch (Exception $e) { 
     print $e->getMessage(); 
} 

如我所料和工作顯示:

<! dÓ(C T)ýPËH T米L P等ü乙L I

雖然如果我修改線:

for ($i=0;$i<20;$i++) echo $array[$i]; 

然後我什麼也沒有顯示。 第二種情況如何顯示沒有?

+1

另外,如果你正在尋找剛剛擊穿一個字符串,請嘗試使用`$ HTML {$ I}`(這帶來了它更傳統的C風格字符串,可以引用單個字符串字符)。 – 2011-01-19 15:27:23

回答

1

也許現在您的瀏覽器正在嘗試呈現html輸出,它只是導致「空白頁」。 您是否嘗試過「查看源代碼」選項?

+0

是的,您是對的,我在「查看源代碼」中看到回顯部分。所以我需要讓瀏覽器顯示它。 – tucson 2011-01-19 15:40:33

+0

我認爲你需要這個功能:http://it.php.net/htmlentities – 2011-01-19 16:06:33

3

可能因爲您的瀏覽器不喜歡這個部分文檔類型。在做任何事之前,嘗試加入header("Content-Type: text/plain")

+0

使用標題(「Content-Type:text/plain」)時出現錯誤:「無法修改標題信息 - 標題已被髮送」 – tucson 2011-01-19 15:46:31

+0

必須在任何輸出之前添加它(如echo) – sloonz 2011-01-19 15:58:12

0

更改這個

for ($i=0;$i<20;$i++) echo htmlspecialchars($array[$i]); 
3
for ($i=0;$i<20;$i++) echo $array[$i]; 

將輸出一個HTML標籤,這是由瀏覽器解釋的有效啓動。因此你看不到它。

可以使用echo htmlentities($array[$i]);動態更改您的實體或只需更換你的HTML中的每個標籤的開始:$html = str_replace('<','&gt;',$html);


編輯
作爲一個側面說明那些誰不熟悉的實體:

&gt;是代表<的html實體,就像&lt;代表>一樣。他們分別表示,greater thanless than,並提供一種替代方法來打印<,否則將被瀏覽器

1

你得到的輸出進行解釋,但輸出的是<DOCTYPE聲明的開頭。你爲什麼期望看到這個輸出?在瀏覽器中執行「查看源代碼」,您會看到它。

0

嘗試使用:

echo $array[$i]." "; 

代替:

echo $array[$i]," ";