• ベストアンサー

正規表現文字列をDB登録

正規表現に詳しくないことと、PHPも携わったばかりなので、苦戦しています。ご教授いただけると助かります。 以下のようなことをやろうとしています。 1.フォームで入力された正規表現を文字列としてDBに登録していきます。 例{http://[w-.]*test_site.jp}i 2.登録データを取り出して、preg_replace()を使いたいです $url_text = {http://[\w\-.]*test_site\.jp}i $db_data ←1のデータ(配列になってます) preg_replace($db_data, '', $url_text, -1) そうすると、$db_dataの中身は\がないために、エラーとなります。 Warning: preg_replace(): Compilation failed: range out of order in character class at offset 10 DBから取得した後に、変換するような関数などあるんでしょうか。 それとも他の方法を探したほうがよいのでしょうか。 一致したものを省きたいような処理なのですが・・・。 ためしにpreg_quote()をかけてみましたが変な風に置換されてダメでした。 うまく説明もできなくて申し訳ないですが、何か良い案ありますでしょうか。 必要であれば、補足いたします。 ぜひお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#21216
noname#21216
回答No.2

ただの文字列ですから データに保存する段階で \がとれるなどして 間違っているのではないでしょうか? 取り出しでなく 保存のコードをもう一度見直すといいと思います

kya_p
質問者

お礼

お礼遅れまして申し訳ございません。 結局、\をreplaceして保存する方法にしてしまいました。 ご助力ありがとうございました。

その他の回答 (1)

  • fire--
  • ベストアンサー率49% (146/293)
回答No.1

addslashesでうまく行きませんか。 >addslashes >(PHP 3, PHP 4 , PHP 5) > >addslashes -- 文字列をスラッシュでクォートする >説明 >string addslashes ( string str) > >データベースへの問い合わせなどに際してクォートされるべき 文字の前 >にバックスラッシュを挿入した文字列を返します。クォート されるべき >文字とは、シングルクォート('), ダブルクォート("),バックスラッシュ >(\) ,NUL (NULL バイト) です。 > >注意: magic_quotes_gpc は デフォルトでOnです

kya_p
質問者

お礼

お礼遅れまして申し訳ございません。 結局、\をreplaceして保存する方法にしてしまいました。 ご助力ありがとうございました。

kya_p
質問者

補足

回答ありがとうございます。 すみません。 月曜日に実践してみますので、少々お待ちくださいませ。

関連するQ&A