いつもお世話になっております。
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も見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
ちょっと先の未来クイズ第5問
日本漢字能力検定協会が主催し、12月12日に発表される、2024年の「今年の漢字」に選ばれる漢字一文字は何でしょう?
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
ダブルクォーテーションのreplaceの方法
JavaScript
-
ダブルコーテーション(
PHP
-
ダブルクォーテーションの削除(置換)
Perl
-
-
4
文字列に含まれているダブルクォーテーション( )を置換する"
その他(パソコン・スマホ・電化製品)
-
5
ダブルクォーテーションを含む正規表現について。
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSで"をエスケープする文字は?
-
不規則なaタグのスクレイピング...
-
Pukiwikiの編集にて#や-を無効...
-
mb_ereg_replace関数の正規表現
-
c# string型の変数に、ダブルク...
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
ソースコードの1行が長いとき...
-
メッセージボックスで1025文字...
-
エクセルのCOUNTIFが正しくカウ...
-
改行を読み飛ばす
-
文字の入力で横バー上段、中断...
-
Replace関数は文字数の制限ある...
-
VBA ASC関数で変換できない文...
-
カンマの含まれる文字列の数値...
-
PHPmailerでの添付ファイルの文...
-
秀丸の正規表現で複数行にわた...
-
fputsで改行できない
-
delphi でのコード上でTab を入...
-
CSVファイルの改行コード判別
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSで"をエスケープする文字は?
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
PHPの¥
-
○分から○時間○分に変換
-
文字列の括弧について(初心者)
-
c# string型の変数に、ダブルク...
-
(から)までの文字列を削除したい
-
ダブルクォーテーションが置換...
-
文字列のアスタリスク置換
-
nl2brが効かないのですが・・・
-
2バイトローマ数字小文字につ...
-
【PHP】preg_replace() で正...
-
文章から指定した範囲の文字列...
-
REGEXREPLACE関数について、
-
htmlspecialchars関数でエスケ...
-
php 正規表現で、\\マークを取...
-
mcryptで英数字(12未満)のみに...
-
近似した文字列を置換するエク...
-
ダブル、シングルクォーテーシ...
おすすめ情報