• ベストアンサー

\x00 でエラー

preg_replace で \x00 を使うと No ending delimiter '/' found というエラーが出てしまいます。 このエラーの解決法はどのようにすればいいのでしょうか 例) $str = preg_replace("/((?:[\x80-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF])*)([\xF8\xF9][\x40-\x7E\x80-\xFC])/e","'$1[i'.unpack('H4','$2').']'",$str); サーバー環境 WindowsXP SP2 Apache1.3.37 php 5.2.1

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • racci
  • ベストアンサー率64% (9/14)
回答No.1

\x00 などと書いてあるところを、バックスラッシュを重ねて \\x00と書けば通ると思います。 なお、unpackは配列を返すので、ご提示のコードそのままでは期待通りの動きをしないと思います。

wish46
質問者

お礼

できました。ありがとうございした。 unpack の部分はコールバック関数で対応しています。

関連するQ&A

  • 機種依存文字の除去

    現在PHP,EUC-JP環境にてプログラミングをしているのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1432515 を参考にして機種依存文字の除去にチャレンジしています。 $str = mb_convert_encoding($str,'SJIS','EUC-JP'); $str = preg_replace( "/([\x87][\x40-\x9F]|[\xED-\xEE][\x40-\xFC]|[\xFA-\xFC][\x40-\x4B]|[\xF0-\xF9][\x40-\xFC])/" ,"",$str); $str = mb_convert_encoding($str,'EUC-JP','SJIS'); で機種依存を試しているのですが、うまくいきません。 ところどころ?+半角文字になったり、機種依存文字は?になったりします。 EUC-JPで機種依存文字を除去できる方法であれば上記の方法にこだわりません。 どなたかご教授いただけないでしょうか? よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • フォームから送られてきた文字数の取得について。

    アルファベットだけなら簡単なのですが、日本語が混ざると自分には難しいようです。。 下のスクリプトは「日本語も含めた文字列の文字数の取得」と検索して出てきたのですが、 sub mojisuu { my $moji = shift; my $kazu = 0; while( $moji =~ m/ [\x00-\x7F\xA1-\xDF]| [\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC] /gx ) { $kazu++; } } どうにもうまく動きません。$moji に「ss」と入れても、 $kazu が 0のままです。 日本語も含めた文字数の取得はどのようにすれば出来るでしょうか??分かる方いらっしゃったらご教授頂けると幸いです。

    • ベストアンサー
    • Perl
  • エラーログ「\x8ew\x92\xe8・・・」はどういう意味?

    以下のような意味不明のサーバー「エラーログ」が出るのですが、何を意味しているのでしょうか? スクリプト(フォームの入力値を取得するプログラム)の動作上はなんら問題はないのですが、必ず出るエラーなので、その意味が知りたいのです。 ------------- [Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi [Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi -------------- ActivePerl-5.6.1.638-MSWin32 Apache/2.0.55(Win32)

    • ベストアンサー
    • Perl
  • Apacheの400 Bad Request

    macOS 12.6.4にApache(2.4.57)をインストールしています。IPアドレス直打ち対策と、.htaccessによるIPアドレス制限を行った結果、ほとんどの望まないアクセスに対して403を返せるようになりました。 しかし、唯一残っているのが、表題の「400 Bad Request」です。ほぼ特定のIPアドレスからのアクセスなのですが、IPアドレス制限に引っかかってくれません。しかも量が多いのです。(今日の17時から23時までで143件中95件) このアクセスを拒否する方法はありますでしょうか? ログは以下のような感じで意味不明です。(IPアドレスは伏せています) xx.xx.xx.xx - - [13/May/2023:22:47:06 +0900] "\xbb\x04\x01,\x04\x14\x88A\xfbsS\x17S\x17\xca\xe6\t\xf80J\"\xb5\xbf`\xcd<\xab\x9c\xcdY\b\x1fp\xd8\x88\x04\x93&\x1f\x81\xf0_\xf4Z\xc7\xa6\x07Y\xafvn\x8c\xf5l-\x86\x86\x97S\xe3\x10\xd5\xa2\x01\xd7.\xef\x14u\x96\x9b(V\\\xa9z\xe4\x9e=M\xfe\xa6\xcf)7\\A;Fe\xee\x1a\xacIU<\\ \xa6\x1f6\x03|\x11\xe6\xd9U\xaa]\xd3\xfc\x05\x15\xf9\x0e" 400 226 "-" "-"

  • シフトJISの2バイト文字

    シフトJISの1バイト目は シフトJISの1バイト目は 0x81~0x9F と 0xE0~0xEF と書いてあるサイトもいくつかあるし、 0x81~0x9F と 0xE0~0xFC と書いてあるサイトもいくつかあります。 どうして意見が2つに分かれているんですか? どっちが正しいのか教えてください。 シフトJISの2バイト目は 0x40~0x7E と 0x80~0xFC ですか?

  • 半角カナから全角カナへ

    お世話になります。 今、フォームから入力された半角カナを全角カナへ変換しようとしているのですが、どうしてもうまく行きません。 処理は以下のようにしています。 jcode::convert(\$str, 'euc'); if($str =~ /[\xA1-\xDF]/){ jcode::h2z_euc(\$str); } (1)まず、半角カナが含まれているかのチェックで[\xA1-\xDF]を使用していますが色々調べたところ、実際は (?:\x8E[\xA6-\xDF]) が正しいようなのですが、この場合文字数が少ないとひっかかってくれません。例えば半角のア1文字や2文字など。また、文字数が多くても半角英数と半角カナが混在しているとひっかからない場合もあります。 上記の式だとひっかかってくれますが、この判定で構わないのでしょうか。 (2)上記の式できちんと置換されるものとされないで漢字のように文字化けするものと出てきてしまいます。 例えば「インターフェース」などという半角は全滅です。 「バージョン」などは大丈夫でした。 間違いなど教えて頂ければと思います。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • シフトJIS の1バイト目

    シフトJISの1バイト目は 0x81~0x9F と 0xE0~0xEF というサイトもある。 0x81~0x9F と 0xE0~0xFC というサイトもある。 最近、文字コードに追加か削除された文字があるから 意見が2つに分かれていると思うんだけど、 現在はどうなのか教えてください。 シフトJISの2バイト目は 0x40~0x7E と 0x80~0xFC ですか? http://google.yahoo.co.jp/bin/query?p=%a5%b7%a5%d5%a5%c8JIS+9F+E0+81&hc=0&hs=0 を参考にしました。

    • 締切済み
    • CGI
  • Stop エラーにつ

    Stop エラーにつ Windows XP Pro を install しようとしたら、次の様なエラーメッセージがでてきました。 ××× STOP: 0x0000007E (0xC0000005,0xF748E0BF,0xF78DA208,0xF78D9F08) ××× pci.sys-Address F748E0BF base at F7487000,DateStamp 3b7d855c です。 何回やってもおなじエラーが出てきます。 どなたか解決策をご存じでしたら、お教えください。 宜しくお願いいたします。    以上

  • x^2e^(-x)の極値について

    x^2e^(-x)の極値について 取りあえず微分します。 f(x)=x^2e^(-x) f'(x)=2xe^(-x)-x^2e^(-1) f'(x)=2xe^(-x)-x^2e^(-1)=0 e^(-x){x(2-x)}=0 x=0,2 グラフの概形はxの正方向からy=0付近を直線的に(0,0)に向かって減少し、 以降はほぼ直線的なまま僅かな増加傾向をx=-2まで行い、以降は急激に増加すると思います。 ”鍋を半分に切った左側”です。 この場合、最小値としてのf(0)=0は理解できますが、f(2)=4/e^2は何なのでしょうか? お手数をお掛け致します。

  • XPでなにかやっていると青画面になる

    自作PCにXPをインストールしたのですが、 どうもフリーズを起こしたり、ブルースクリーンが出ます。 ブルースクリーンのエラー内容は、色々ありまして。 0x7F 0x8E 0xC5 0xD1 0xE3 0xAなどがあります。(確認できたのがここまで) このエラーたちで調べてみたのですが、原因がはっきりしません。 どなたか、お助けください。お願いします。

専門家に質問してみよう