![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっております。
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ランキング
-
正規表現で<BR>の行を除外した...
-
VBSで"をエスケープする文字は?
-
VBAのコマンドボタンの文字列の...
-
awkの BEGIN{RS=""} で空行を削...
-
fputsで改行できない
-
PHPで<a>タグ内からURLと文字を...
-
ソースコードの1行が長いとき...
-
コンボボックスの項目中に改行を
-
「続行するには何かキーを押し...
-
正規表現 文中空白可能
-
タグにはさまれている文字以外...
-
なぜインターネットでは半角カ...
-
VBA テキストボックスの行数取得
-
SQL Serverで文字コードUTF-8
-
正規表現で記号 & アンドの検索...
-
正規表現で特定のHTMLタグのク...
-
PHPで変数から1行目だけを取得...
-
テキストファイルから改行コー...
-
ファイルから読み取った改行文...
-
文字化け変換方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルコーテーション(
-
REGEXREPLACE関数について、
-
VBSで"をエスケープする文字は?
-
文字列の置換をCStringで(C++)
-
PHPの¥
-
○分から○時間○分に変換
-
ダブルクォーテーションが置換...
-
文字列の括弧について(初心者)
-
Smartyで携帯絵文字を表示する方法
-
php 正規表現で、\\マークを取...
-
文字列のアスタリスク置換
-
PHP・Wordpress preg_replaceを...
-
nl2brが効かないのですが・・・
-
独自タグに囲まれた文字列の変換
-
ダブルクオーテーション
-
入力文字に\\マークが入ってい...
-
空白文字のカンマへの変換について
-
PHPでjavascriptを書き出すとき...
-
上手い置換方法は?
-
2バイトローマ数字小文字につ...
おすすめ情報