2013-04-02 90 views
0

我想删除使用preg_replace的html文件中的html和body标签,但不是替换所需的标签,整个html文件都变成空白。我不明白的地方,我错了......我觉得我在一个基本的想法去错了,但不明白的地方 这是我使用的代码:str_replace在一个文件不起作用

$f = fopen ("game1/game.html", "w"); 
$replacetags=array('<html>', '</html>', '<body>', '</body>','<head>','</head>') 
$file= str_replace($replacetags,'',$f); 
fclose($f); 

此外,如果任何人都可以建议一个更好的方法来删除标签它将有帮助.... 谢谢..

+0

试着看一下[striptags()](http://php.net/manual/en/function.strip-tags.php),除了你必须* *白名单被允许你想要的标签。 –

回答

1

str_replace函数是不会用的fopen处理工作(如我在PHP裁判看),所以你需要使用这个

 $replacetags=array('<html>', '</html>', '<body>', '</body>','<head>','</head>'); 
     $file= str_replace($replacetags,'',file_get_contents("game1/game.html")); 
     $f = fopen ("game1/game.html", "w"); 
     fwrite($f,$file); 
     fclose($f); 
3

作为输出是正确的。您出错的地方是当您替换这些标签时'<html>', '</html>', '<body>', '</body>','<head>','</head>'浏览器无法将其渲染为正常的网页。要在浏览器中显示,您应该遵循正确的格式。

它应该在broswer

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
</body> 
</html> 

要显示的下方格式为您的信息来源

strip_tags - 地带HTML和PHP代码从一个字符串。你可能也想看看这个。

+0

我没有看到在浏览器中的文件.....我看到它在文本编辑器.... – user1978166

0

则fopen应该是:

$file = fopen('game.html', 'w+'); 

你的游戏。 html页面被你的代码删除了。看看是不是相信我

我也会推荐你与str_ireplace一起工作。

1

fopen函数打开文件句柄(这是一个resource类型)。

您可能想要使用file_get_contentsfile_put_contents函数。他们实际上是将数据读写到一个文件中。

1

当您消除重要的标记为HTML,你是不是能够看到在浏览器中输出。

因此,str_replace函数正在通过运行下面的代码well.You可以交叉检查:

<?php 
    $f =file_get_contents('game1/game.html'); 
    $replacetags=array('<html>', '</html>', '<body>', '</body>','<head>','</head>') ;   
    $file= str_replace($replacetags,"",$f); 

    file_put_contents("output.html", $file); 
?> 

运行或加载页面后(即上面的源代码包含)在浏览器中,当你用文本编辑器打开生成的output.html文件,您将看不到body,head和html标记。

UPD: 为什么HTML文件完全空白

当你打开的文件或网址与fopenW¯¯模式,以下情况发生:

'w': Open for writing only; place the file pointer at the 
beginning of the file and truncate the file to zero length. 
If the file does not exist, attempt to create it. 

当你用的fopenfopen ("game1/game.html", "w");打开文件时,文件指针被放置在由于您没有在game.html中编写任何内容,所以文件和文件的开头被截断为零(空白),因此html文件变为空白。

还要注意:在str_replace第三个参数是the string or array being searched and replaced on, otherwise known as the haystack。但在您的代码中,您传递的第三个参数$ f是文件句柄。当你使用输出echo or print$file字符串,那么资源ID #x中将被代替印刷过滤(目标)串的结果。

+0

感谢....我没有写的内容回在文件中..... – user1978166

+0

我必须补充我没有在浏览器中看到输出。我在gedit中看到它...即使现在我也不明白为什么文件完全空白....无论如何,问题解决了...... – user1978166

+0

@ user1978166:请检查我的更新。 –

相关问题