• ベストアンサー

指定の文字を入れ替えることについて!

こんばんわっ! 最近は寒くなってきました。 インフルエンザは大丈夫ですか皆さん。 さて早速質問行かせて頂きます。 フォームの入力値に絵文字が入っていたら取り除くと言う事をしてたんですけど。。。 バイナリ値に分解は出来ました。 分解を行い絵文字を〓にしたいと思っています。 $_POST[1] = str_replace('/\[d:(F[346789][0-F]{2})\]/e', '〓', $_POST[1]); にしてみましてけどだめでした。 $_POST[1] = str_replace('/BAD\+(F[346789][0-F]{2})/', '[★]', $_POST[1]); を加えてみてもだめでした。 preg_replace にしてみてもだめでした。 どこが間違っていますか!!!

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

  • ベストアンサー
  • foofoo0
  • ベストアンサー率42% (39/92)
回答No.2

まず、str_replace関数は正規表現に対応していないので、preg_replace関数を使う必要があります。 また、検索文字列にe修飾子を付けていますが、これは置換文字列がPHPコードの場合に指定するものなので、今回のように'〓'に変換する場合には指定しません。 なので、下記のように書けばうまくいくと思いますよ。 $_POST[1] = preg_replace('/\[d:(F[346789][0-F]{2})\]/', '〓', $_POST[1]);

iinnffoo
質問者

お礼

こんばんわっ! preg_replaceだったんですか・・・。 何度してみてもだめなはずでした。 ありがとうございます!

iinnffoo
質問者

補足

できました(*^-^*) 助かりました。 皆様ありがとうございましたっ!

その他の回答 (1)

回答No.1

$_POST[1]はPOSTされた値そのままではないですか? 一度バイナリに分解する処理を通した値にしないとダメだと思います。

iinnffoo
質問者

お礼

おせわになっておりますっ! >>$_POST[1]はPOSTされた値そのままではないですか? そうです! [d:○○○○]みたいになっています。 一応バイナリ値に変換は出来たみたいです。 substitute_characterを使いました。 説明不足でした。 すみませんでした。 分解自体は成功していると思います。 hogehoge78さんありがとうございましたっ!p(^-^)q

iinnffoo
質問者

補足

理想的にはこう言う感じになります。 $_POST[1] =str_replace(array(/\[d:(F[346789][0-F]{2})\]/e), "〓", $_POST[1]); 出来ません・・・。

関連するQ&A