![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
フォームで送信された文字列のうち、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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なぜインターネットでは半角カ...
-
文字の入力で横バー上段、中断...
-
エクセルでの漢字、カタカナ、...
-
VBAで英数字入力チェックしたい。
-
VBのソース検索で、コメントア...
-
バッチファイル 全角検索
-
エクセルでデータを30バイト...
-
記号は半角と全角どちらがよい...
-
@ezweb.ne.jpについて教えて下...
-
半角記号、全角記号を含む正規...
-
全角括弧と全角読点の間隔を狭...
-
全角英数文字が嫌われる理由を...
-
smartyについて
-
エクセルのCOUNTIFが正しくカウ...
-
HTMLファイルの名前の付け方
-
全角半角変換 C++/CLI
-
メッセージボックスで1025文字...
-
CapCutってどうやったら文字を...
-
半角数字かどうかの判定
-
VBAのコマンドボタンの文字列の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスで1025文字...
-
文字の入力で横バー上段、中断...
-
エクセルのCOUNTIFが正しくカウ...
-
全角括弧と全角読点の間隔を狭...
-
Excel関数「COUNTIF」で”文字”...
-
半角記号、全角記号を含む正規...
-
全角英数文字が嫌われる理由を...
-
エクセルでの漢字、カタカナ、...
-
XMLのタグ名の禁則文字
-
特定の文字を簡単な操作で半角...
-
記号は半角と全角どちらがよい...
-
パソコンで全角、半角文字の切...
-
VBAで英数字入力チェックしたい。
-
文字列中の両丸括弧を取り除くV...
-
VBScriptである文字列に半角文...
-
Replace関数は文字数の制限ある...
-
全角半角変換 C++/CLI
-
半角文字と全角文字の判別の仕方
-
2つ以上の連続する空白文字を除去
-
=code(" ") で値が160となる文...
おすすめ情報