0

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);

また、誰かがタグを削除するためのより良い方法を提案できれば、それは役に立ちます....ありがとう..

4

5 に答える 5

1

bodyheadhtmlなどの重要なタグを削除すると、ブラウザーで出力を表示できなくなります。

したがって、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を使用してファイルまたは URL を開くと、次のことが起こります。

'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 asでファイルを開いているfopen ("game1/game.html", "w");と、ファイル ポインターがファイルの先頭に配置され、ファイルの長さがゼロ (空白) に切り詰められます。

また、注意: str_replaceの 3 番目のパラメーターはthe string or array being searched and replaced on, otherwise known as the haystack. ただし、コードでは、渡す 3 番目のパラメーター$fはファイル ハンドルです。その結果、 を$file使用して文字列を出力すると、フィルタリングされた (対象の) 文字列の代わりにリソース ID #x がecho or print出力されます。

于 2013-04-02T04:51:05.520 に答える
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);
于 2013-04-02T04:37:44.743 に答える
0

fopen は次のようにする必要があります。

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

コードで game.html ページが削除されました。私を信じていないかどうか見てください

また、一緒に働くことをお勧めしますstr_ireplace

于 2013-04-02T04:37:57.883 に答える