2013-04-02 135 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:請檢查我的更新。 –

相關問題