2011-01-19 115 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]," ";