フォームで送信された文字列のうち、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で質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メッセージボックスで1025文字...
-
文字の入力で横バー上段、中断...
-
半角英数字のみを受け付ける入...
-
Excel関数「COUNTIF」で”文字”...
-
全角半角変換 C++/CLI
-
記号は半角と全角どちらがよい...
-
半角スペース の文字化け...
-
半角記号、全角記号を含む正規...
-
エスケープ文字にstr_replaceが...
-
エクセルでの漢字、カタカナ、...
-
半角文字と全角文字の判別の仕方
-
phpの正規表現でカタカナ+スペ...
-
半角数字かどうかの判定
-
パソコンで全角、半角文字の切...
-
全角括弧と全角読点の間隔を狭...
-
全角半角あわせて3文字
-
CapCutってどうやったら文字を...
-
入力データ「英数字」と「アン...
-
Accessの文字数を調べたい
-
全角カタカナの正規表現
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
半角記号、全角記号を含む正規...
-
エクセルのCOUNTIFが正しくカウ...
-
XMLのタグ名の禁則文字
-
文字列中の両丸括弧を取り除くV...
-
VBScriptである文字列に半角文...
-
全角英数文字が嫌われる理由を...
-
記号は半角と全角どちらがよい...
-
Excel2002 一桁数字だけ全角に置換
-
エクセルでの漢字、カタカナ、...
-
特定の文字を簡単な操作で半角...
-
Replace関数は文字数の制限ある...
-
VBAで英数字入力チェックしたい。
-
IT企業の技術屋にとって全角英...
-
2つ以上の連続する空白文字を除去
-
全角半角変換 C++/CLI
-
Accessの文字数を調べたい
おすすめ情報