
フォームで送信された文字列のうち、str_replace関数を使って半角記号を全角記号に置換したいのですが、一部のエスケープ文字が含まれている文字列の置換が上手くいきません。
ソースは以下に記しますが、現状では、"(ダブルクォート)は\"、&(半角アンド)は&と置換されてしまいます。
この場合であれば、”(全角ダブルクォート),&(全角アンド)と出力させたいのですが・・・
どなたかお気づきの点ありましたらご教示宜しくお願いします!
===============ソースコード=================================
<?php
$system = "";
if (isset($_POST["submit"])) {
$system = htmlspecialchars($_POST["system"], ENT_QUOTES);
$system = mb_convert_encoding($system, "EUC-JP", "SJIS");
$system = str_replace('&', '&', $system);
$system = str_replace('"', '”', $system);
$system = str_replace('あ', '”', $system);
$_SESSION["system"] = $system;
}
$str = <<<STRING
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<form method="post" action="{$SERVER['PHP_SELF']}" enctype="multipart/form-data" >
<textarea name="system" cols=40 rows=5 wrap=soft>{$system}</textarea>
<input type="submit" name="submit" value="送信">
</form>
----------------------------------------------------------<br>
{$_SESSION["system"]}
</body>
</html>
STRING;
$str = mb_convert_encoding($str, "SJIS", "EUC-JP");
echo $str;
?>
============================================================
ちなみに、『あ』→『”(全角ダブルクォート)』と、正しく置換されます。
No.1ベストアンサー
- 回答日時:
そういうソースになっているとしか言えません。
最初に下記の処理がありますから。>$system = htmlspecialchars($_POST["system"], ENT_QUOTES);
ENT_QUOTESは、通常の処理に加えて単引用符の処理も行う・・という意味なので、アンパサンドや二重引用符は処理(エスケープ)されます。
http://jp2.php.net/manual/ja/function.htmlspecia …
なるほど。。
$system = str_replace('&', '&', $system);
$system = str_replace('\"', '”', $system);
こう書かなければならなかったのですね!
大変参考になりました。ありがとうございます☆
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessの文字数を調べたい
-
文字の入力で横バー上段、中断...
-
全角英数文字が嫌われる理由を...
-
半角記号、全角記号を含む正規...
-
エクセルのCOUNTIFが正しくカウ...
-
全角括弧と全角読点の間隔を狭...
-
半角スペース の文字化け...
-
全角カタカナの正規表現
-
Postgresの特定のカラムからス...
-
全角半角あわせて3文字
-
VBのソース検索で、コメントア...
-
Phonetic関数を利用して文章中...
-
VBAのコマンドボタンの文字列の...
-
文字化け変換方法
-
texのchapterが改行される
-
ソースコードの1行が長いとき...
-
【PHP】mb_convert_encoding...
-
文字列を文字コードの数値に変...
-
テキストボックスに改行を含む...
-
jsp 改行コードで改行させて表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PPT ファイルの文字カウント=...
-
文字の入力で横バー上段、中断...
-
エクセルのCOUNTIFが正しくカウ...
-
メッセージボックスで1025文字...
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
Accessの文字数を調べたい
-
VBAで英数字入力チェックしたい。
-
XMLのタグ名の禁則文字
-
エクセルでの漢字、カタカナ、...
-
全角英数文字が嫌われる理由を...
-
Replace関数は文字数の制限ある...
-
なぜインターネットでは半角カ...
-
=code(" ") で値が160となる文...
-
記号は半角と全角どちらがよい...
-
VBのソース検索で、コメントア...
-
マクロできる方教えてください...
-
半角文字と全角文字の判別の仕方
-
全角半角混在の文字列から○文字...
-
ショートメールの文字数
おすすめ情報