0

"Text.csv" に次の文字列を書き込んでいる場合: ' my name is "Robert" '、Text.csv に追加される文字列は次のようになります: my name is /"Robert/" ' .

私のコードでは、csv ファイルに書き込む前に、$_POST 変数が php 関数 htmlspecialchars() でエスケープされています。しかし、まだスラッシュが表示されています。

問題は何ですか?

Text.csv セクションからの読み取り:

$myFile = "Text.csv";
$fh = fopen($myFile, 'r') or die("can't open file");
for ($i=0 ; $i<5 ; $i++)
{
  $line=fgets($fh);

  if ($line)
  {
  $line_of_text =  explode(",", $line);
echo htmlspecialchars($line_of_text[0]).'<br />';
echo htmlspecialchars($line_of_text[1]).'<br />';
echo htmlspecialchars($line_of_text[2]).'<br />';
echo htmlspecialchars($line_of_text[3]).'<br />';
echo htmlspecialchars($line_of_text[4]).'<br />';
} } fclose($fh);

Text.csv セクションへの書き込み:

header('Content-type: text/html; charset=UTF-8');
$myFile = "Text.csv";
$fh = fopen($myFile, 'w') or die("can't open file");
for ($i=1 ; $i<26 ; $i++)
{
$str='l'.intval(($i-1)/5).'f'.(($i-1)%5);

if (($i%5)==0)
    {
    $stringData = $_POST[$str].PHP_EOL;
   fwrite($fh, htmlspecialchars($stringData));
    }
Else
    {
    $stringData = $_POST[$str].",";
    fwrite($fh, $stringData);
    }
}

fclose($fh);
4

1 に答える 1

0

htmlentities()HTML文字のエンコードとデコードに使用する必要があると思いますhtml_entity_decode()

このコードを試してください。

Text.csv セクションからの読み取り:

$myFile = "Text.csv";
$fh = fopen($myFile, 'r') or die("can't open file");
for ($i=0 ; $i<5 ; $i++)
{
  $line=fgets($fh);

  if ($line)
  {
  $line_of_text =  explode(",", $line);
  echo html_entity_decode($line_of_text[0]).'<br />';
  echo html_entity_decode($line_of_text[1]).'<br />';
  echo html_entity_decode($line_of_text[2]).'<br />';
  echo html_entity_decode($line_of_text[3]).'<br />';
  echo html_entity_decode($line_of_text[4]).'<br />';
}
} fclose($fh);

Text.csv セクションへの書き込み:

header('Content-type: text/html; charset=UTF-8');
$myFile = "Text.csv";
$fh = fopen($myFile, 'w') or die("can't open file");
for ($i=1 ; $i<26 ; $i++)
{
$str='l'.intval(($i-1)/5).'f'.(($i-1)%5);

if (($i%5)==0)
{
    $stringData = $_POST[$str].PHP_EOL;
    fwrite($fh, htmlentities($stringData, ENT_QUOTES));
}
else
{
    $stringData = $_POST[$str].",";
    fwrite($fh, htmlentities($stringData, ENT_QUOTES));
}
}

fclose($fh);
于 2013-06-17T11:57:02.313 に答える