![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になっております。
PHP初心者です。
シングルクォーテーションとダブルクォーテーションを文字列として入力したいと思い、以下のように記述しました。
--------------------------------------------------
$naiyo = $_POST['naiyo'];
$search = array('\'','"');
$replace = array('\'\'','\"');
$naiyo2 = str_replace($search,$replace,$naiyo);
--------------------------------------------------
シングルクォーテーションは置換された(文字列として表示された)のですが、ダブルクォーテーションは表示されず、ダブルクォーテーション以下の文字列が消えてしまいます。
置換ができていないというよりも、そもそもダブルクォーテーションが検索に引っかかってもいないようです。
どのようにすればダブルクォーテーションも置換できるか、お分かりの方がいらっしゃいましたらご教示ください。
よろしくお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
連投すいません。
今現在手もとのPHPが5.4系なので状況を確認できないのですが
GET POST等されたとき古いPHPだとでデフォルトでシングルクオーテーション・ダブルクオートがバックスラッシュでエスケープされます。
この
magic_quote_gpcをOFFにするのが一番いいのですが、それができない場合
まず、バックスラッシュでエスケープされるということは
$naiyo = "いいい\\'えええ\\\"";
上記の様な形ででHTTPリクエストが帰ってきます。
ということは、置換系の関数で\\をとってやればいいということになります。
たとえば以下のような感じ?
$search = array('\\','\\');
$replace = array('','');
$naiyo2 = str_replace($search,$replace,$naiyo);
print $naiyo2;
かななあ・・・。ごめんなさい、掲題の環境がないから憶測だけど。
できなかったらすんません。
No.3
- 回答日時:
PHPのmagic_quotes_gpc
の設定によってかわってくるんじゃないですか?
magic_quotes_gpcがOnだとデフォルトでGET POST COOKIEの値が
バックスラッシュでエスケープされます。
仮にOffにした場合
naiyo=おおお'ee"
という値をGETで取得したとき
$search = array('\'','\"');
$replace = array('\'','\"');
の条件ならきちんと変換されました。
No.2
- 回答日時:
「何のために」置換するのでしょうか?用途によって(何のために行うのかによって)手法は異なってきます。
>シングルクォーテーションとダブルクォーテーションを文字列として入力したいと思い
普通は「そのまま」で問題ないハズですが・・・。
たとえばスクリプト間を持ち回るためにinput要素(type="hidden")のvalue属性に与えたいのであれば、htmlspecialcharsしてから与えるべきです(単引用符と二重引用符をどうにかすればいいという話ではありません)。
また、この(単引用符や二重引用符を含んだ)文字列データをデータベースに挿入するのであれば、
・mysql_real_escape_stringを使う(非推奨のネイティブなMySQL関数)
・プリペアドステートメントを使う(PDOやMDB2など)
になるハズです。
No.1
- 回答日時:
変換後の文字列 $naiyo2 をどのようにして出力していますか?
書かれているプログラムを実行してみたら、シングルコーテーションはシングルコーテーション2個に、ダブルコーテーションは円マークとダブルコーテーションに変換されていましたよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) 数式の置換がうまく行かない 6 2022/05/04 15:51
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- ホテル・旅館 ホテルの厚意でのアップグレードの場合 5 2023/06/10 13:18
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Visual Basic(VBA) Excel vba で1と10を正確に判断させる方法を教えてください。 TからU列に1と入力があれば 3 2022/12/26 16:54
- その他(IT・Webサービス) 少し複雑なテキスト置換がしたいです。 2 2022/10/13 14:42
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleのように検索結果を数十...
-
ダブルクォーテーションが置換...
-
mcryptで英数字(12未満)のみに...
-
PHP・Wordpress preg_replaceを...
-
2バイトローマ数字小文字につ...
-
bashで文字列に含まれる//(ス...
-
ダブルコーテーション(
-
近似した文字列を置換するエク...
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
エスケープ文字の復帰(¥r)と...
-
メッセージボックスで1025文字...
-
C++でのCRLFについて
-
全角英数文字が嫌われる理由を...
-
POSTで改行コードを受け渡すには
-
ソースコードの1行が長いとき...
-
C++で空Enterの入力を判...
-
jsp 改行コードで改行させて表...
-
VBAで英数字入力チェックしたい。
-
PHPmailerでの添付ファイルの文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルコーテーション(
-
VBSで"をエスケープする文字は?
-
○分から○時間○分に変換
-
文字列の置換をCStringで(C++)
-
PHP・Wordpress preg_replaceを...
-
PHPの¥
-
php 正規表現で、\\マークを取...
-
nl2brが効かないのですが・・・
-
近似した文字列を置換するエク...
-
文字列の括弧について(初心者)
-
ダブルクォーテーションが置換...
-
(から)までの文字列を削除したい
-
c# string型の変数に、ダブルク...
-
PHPで任意の数の行抽出
-
【php】二進数をフラグとして扱...
-
【PHP】preg_replace() で正...
-
2バイトローマ数字小文字につ...
-
文字列から、特定の文字を削除...
-
PHPで文字列をエンコード↔デコ...
-
SQLインジェンクション対応...
おすすめ情報