2012-04-27 10 views
0

PHPでHTMLファイルを書く際に問題があります。PHPを使用してhtmlファイルを '&'でストールすると、なぜですか?

私はこの機能を持っている:私はopenHTMLを使用している場合は

function openHTML ($file) { 
if (file_exists($file)) { 
$handle = fopen($file, "r"); 
$output = fread($handle, filesize($file)); 
    fclose($handle); 
return $output; // output file text 
}else{ 
return "This file is not exists"; 
} 
} 

function saveHTML ($file,$string) { 
$a = fopen($file, 'w'); 
fputs($a,stripslashes($string)); 
fclose($a); 
return "success"; 
} 

それは大丈夫です。しかし、残念ながら、私がopenHTML()で開いたファイルには、&があります。その後、saveHTML()で保存していますが、文字列またはコードは、&でストールしています。

例:UPDATE!
私はopenHTML()で空白file.htmlを開いて、私は怒鳴る、いくつかの文字列を入力して起動します。不足していることが、最後のコードで

<html> 
<head> 
</head> 
<body> 
This is my login page 

:私はコードsaveHTML()で保存

<html> 
<head> 
</head> 
<body> 
This is my login page & user page 
</body> 
</html> 

後。ストップ:&

私は使用しています。fputsutf8_encodefwritefile_put_contentsです。まだ解決されていません。

+0

に変更されます。 – kuba

+0

@kubaおかげさまでお手伝いしましたが、まだ解決していません。 – wpro

答えて

1

fwrite() instaedを使用してみてください、あなたが保存しようとして文字列に

$output = htmlentities($output); 

を試してみてください。

check it out here

それは彼らの該当キャラにすべてのHTMLエンティティを変更します。 は、この場合、あなたの&は、あなたが `fclose`を呼び出すことを忘れ最初の関数で

&amp; 
+0

*正しく書き込まれた他のHTMLエンティティは破棄されます。 –

+0

@ IgnacioVazquez-Abramsでは、最初にmb_detect_encoding()で設定された文字を簡単にチェックできますが、この例では少し残虐です。 – JeremyS

+0

確かに、生産に入ると他のデータを渡ってくると、すべてが洋梨の形になります。 –

1

孤立したアンパサンドは、PCDATAセクションで無効です。代わりに&amp;を使用してください。

+0

例を教えてください。ありがとう – wpro

+0

回答には例があります。モノスペースの部分を参照してください。 –

+0

まだ動作していません、私の更新を参照してください – wpro

0

fputs()

+0

これはまったく同じです。 – bfavaretto

+0

@Dmitriy Chekalyukはまだ解決していません。fwrite、fputs、file_put_contentsを試しましたが、まだ解決していません。 – wpro

+1

@wpro saveHTML()の呼び出しの前にopenHTML()によって返された文字列で何かしていますか? – lazyhammer

関連する問題