• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:置換のエラー Unmatched [ before HERE mark in regexとは?)

置換のエラー Unmatched [ before HERE mark in regexとは?

このQ&Aのポイント
  • チャットログに特定の文字にリンクを貼りたいと思っています。
  • キーワードとURLを登録し、キーワードが出たらリンクタグをつけます。
  • キーワードに『ー』が含まれると置換のエラーが発生します。どう対処すればいいのか分かりません。

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

  • ベストアンサー
  • tujige
  • ベストアンサー率68% (13/19)
回答No.2

sjis -> euc -> sjis としているわけですね。 確かに大丈夫だとは思います。 wind 系で apache を使用していらっしゃるようですが、エディタで編集するのが便利ということであれば、「秀丸」などのエディタであれば、sjis, euc などを扱えるので特に困ることもないかと。 「便利」というだけで、sjis -> euc -> sjis とすることもないかな?というのが私の考えですが、いかがでしょう。 もし、sjis ということであれば、JPerl を使用したほうがよいのではないでしょうか。 5.005_03 ベースでよいのであれば、バイナリも存在しますし。 私は Unix 系ですが、JPerl を使用して不具合無くサイトを構築した経験もありますし。ただ、jcode.pl の挙動が怪しいという話は聞いたことがあります。 # 最近 perl はご無沙汰なのですが、5.6 からマルチバイト対応になったと # 聞いています。 # ただ、どの程度対応なのかは確認していませんが。。。

katsudon
質問者

お礼

いろいろありがとうございました。 http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm を見たところShift_JISは多くの問題を抱えていることが分かりました。 私の知っていた問題点はその一部に過ぎなかったようです。 ほかのスクリプトのデータがかなり膨大なので、 いまさらデータをEUCへ変換することができません。 (サイトはレンタルサーバーを利用していてそこはActivePerlを使って いるのでJPerlに変更できません。不具合はローカルで実験した時に発生したものです。) その場しのぎの策でなんとかしたいと思います。 本当にありがとうございました。

その他の回答 (1)

  • tujige
  • ベストアンサー率68% (13/19)
回答No.1

ひょっとして、データを Sjift_JIS で記述していませんか? ならば、「ー」だけでなく「表」などもアウトだと思うのですが。(いわゆる、二バイト目があたるという問題です。) JPerl など、日本語対応の perl 以外なら、EUC で保存するほうがよいかもしれません。 文字化けが心配なら、 Content-type: text/html; charset=EUC-JP とすれば、「まず」文字化けはしないと思います。

katsudon
質問者

補足

ありがとうございます。 たしかにShift_JISでデータに記入しています。 たしかに下のような対策を講じるとエラーは起きなくなりました。 Shift_JISだとエディタで編集するのに便利だったので、 他のスクリプトの全てのデータがShift_JISで保存しています。 Shift_JISだとパターンマッチは不可能ということなのでしょうか? 今のところ下の対策で凌いでいますが、 もし対策があれば教えてください。よろしくお願いいたします。 &jcode::sjis2euc(\$FILE{Keyword}); &jcode::sjis2euc(\$CHAT{Message}); $CHAT{Message} =~ s/$FILE{Keyword}/$FILE{Keyword}<a href="http:\/\/$FILE{Link}">*<\/a>/g; &jcode::euc2sjis(\$CHAT{Message});

関連するQ&A