我正在尝试使用preg_replace删除html文件中的html和body标签,但不是替换所需的标签,整个html文件变为空白。我不明白我错在哪里......我觉得我在一个基本想法上出错了,但却无法理解在哪里 这是我正在使用的代码:
$f = fopen ("game1/game.html", "w");
$replacetags=array('<html>', '</html>', '<body>', '</body>','<head>','</head>')
$file= str_replace( $replacetags,'',$f);
fclose($f);
此外,如果有人可以建议一个更好的删除标签的方法,它将有用.... 谢谢..
答案 0 :(得分:3)
输出结果是正确的。你出错的地方是当你更换这些标签时'<html>', '</html>', '<body>', '</body>','<head>','</head>'
浏览器无法将其渲染为普通网页。要在浏览器中显示,您应该遵循正确的格式。
它应具有以下格式以显示在broswer中
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>
为了您的信息
strip_tags - 从字符串中删除HTML和PHP标记。你可能也想看一下。
答案 1 :(得分:1)
str_replace不能用于fopen处理程序(正如我在php ref上看到的那样),所以你需要使用这个
$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);
答案 2 :(得分:1)
fopen
函数会打开文件句柄(resource
类型)。
您可能想要使用file_get_contents
和file_put_contents
功能。它们实际上是将数据读写到文件中。
答案 3 :(得分:1)
当您将重要标记排除为正文,标题和 html 时,您将无法在浏览器中看到输出。
因此, str_replace 运行良好。您可以通过运行以下代码进行交叉检查:
<?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文件完全空白?
当您在 W 模式下使用 fopen 打开文件或网址时,会发生以下情况:
'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.
当您使用 fopen 打开文件fopen ("game1/game.html", "w");
时,文件指针位于文件的开头,文件被截断为零长度(空白),因为你没有在game.html中写任何内容,因此html文件变成空白。
另请注意: str_replace 中的第三个参数为the string or array being searched and replaced on, otherwise known as the haystack
。但是在您的代码中,您传递的第三个参数 $ f 是文件句柄。因此,当您使用$file
输出echo or print
字符串时,将打印资源ID #x 而不是过滤(目标)字符串。
答案 4 :(得分:0)
fopen应该是:
$file = fopen('game.html', 'w+');
您的game.html页面已被您的代码删除。看看是不是相信我
我还建议您使用str_ireplace
。