掲示板のCGIを作成し、運営してましたが最近 業者からの書込が増えてきたため「特定の文字を消去」するようにしました。
$com : 掲示板の書込内容
@word : 消去するための特定文字 変数
foreach (@word) {
if ($_) {
$com =~ s/$_/---/ig;
}
}
取りあえず「特定文字」を変数扱いにし、「---」に置き換えるようにしたのですが、「特定文字」によっては『500 Internal Server Error』が出てしまいます。(例)オープン など
どのように記述したら宜しいのでしょうか?
ご教授下さいm(__)m
No.1
- 回答日時:
質問にあるソースをコピペでプログラムを作ってみましたが問題ないようです。
パーミッション等は大丈夫でしょうか。
一つ気になった点ですが、インデントは半角スペースまたはタブで設定されてますでしょうか?
説明が下手ですいません。
少しでも参考になれば幸いです。
私が書いたソースは下記になります。
-----------------------------------------
#! /usr/bin/perl
$com = qq[
テストようの文字列です。
aaa,bbb,ccc,ddd,EFG,AAA
];
@word = (
"aaa",
"テスト",
);
foreach (@word) {
if ($_) {
$com =~ s/$_/置換後/ig;
}
}
print "content-type:text/html\n\n";
print "$com";
ご回答ありがとうごさいます。
インデントはタブで設定してます。
@word = ("aaa","テスト");
は私もOKでしたが、
@word = ("aaa","テスト","オープン");
にすると500エラーが表示されてました。
No.2ベストアンサー
- 回答日時:
それは文字コードがシフトJISであるために起こる問題です。
シフトJISの全角文字は2バイトで構成されていますが、いくつかの文字はその2バイト目にアスキー文字が割り当てられているのです。
例えば「オープン」の場合、ー が 0x81 0x5B というコードであり、2バイト目の 0x5B が [ (開き大括弧)のコードであるため、これが正規表現のメタ文字として扱われ、対応する括弧がないためにエラーとなるのです。
幸い正規表現には「特定区間のメタ文字を無効化するメタ文字」が用意されているので、これを利用して
$com =~ s/\Q$_\E/---/ig;
とするとよいでしょう。
※メタ文字が含まれる可能性のある箇所を、\Q~\E で囲みます。
その他にも回避方法はあるのですが、他の問題を引き起こしやすいので、この方法がお勧めです。
ご回答ありがとうございます。
文字コードが関係しているのですね。
早速、利用させて頂きますm(__)m
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Word(ワード) 最高裁判所から通達がある Wordの書式設定。所謂 裁判所に提出するすべての書類のことです。 A4縦 2 2022/12/23 15:00
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- PDF I LOVE PDF利用 pdfからWordに変換について 回答お願いいたします。 無料のI LOV 1 2022/05/13 13:24
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
- Word(ワード) ワードで,特定の文字だけ,字体を一括変換する方法は? 1 2023/04/26 10:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 置換文字がみつからない時
-
秀丸で数字だけの行を削除したい
-
各項目がダブルクォーテーショ...
-
csvデータ ダブルクォーテ...
-
住所編集のマクロを組んでいて...
-
Excel VBA 教えてください。 VB...
-
EXCEL警告「置換対象のデータが...
-
パワーポイントの一括置換:複...
-
正規表現でURLを抽出したいと思...
-
C#で空白行を削除する方法
-
テキストファイル中の文字列の置換
-
置換した文字色の変更
-
GoogleAppsScript文字列置換の...
-
複数のパワーポイントファイル...
-
C言語でテキストファイルの内容...
-
【Excel VBA】文字列の置換作業...
-
csvデータのダブルクォーテーシ...
-
エクセル VBA 複数条件一...
-
procmailで本文の文字列置換
-
特定の列のみ置換を行いたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
各項目がダブルクォーテーショ...
-
VBA 置換文字がみつからない時
-
正規表現で、特定の文字列を含...
-
スペースで区切られた氏名から...
-
csvデータのダブルクォーテーシ...
-
csvデータ ダブルクォーテ...
-
GoogleAppsScript文字列置換の...
-
C言語でテキストファイルの内容...
-
正規表現 特定の文字列を含む行...
-
テキストボックスの文字列を置...
-
EXCEL警告「置換対象のデータが...
-
TeraPadエディターの操作方法に...
-
xmlファイル内の文字列置換
-
python 大文字小文字を区別しな...
-
C#で空白行を削除する方法
-
テキストファイル中の文字列の置換
-
Excel VBA 教えてください。 VB...
-
ハングルを日本語に置換
-
EXCEL VBA でCTRL+Fのダイア...
-
PowerShellでテキストの空白行...
おすすめ情報