wwwsrchでタグなどにマッチさせなくするには?

[上に] [前に] [次に]
のほ 1999/08/04(水) 00:02:09
wwwsrch.cgiを利用させてもらっているのですが
検索をするとたまにタグやスクリプトの中身を
検索してしまいます。
検索しないようにする方法ってありますか?

B-Cus 1999/08/04(水) 00:06:27
wwwsrch.cgi は
 $sufix{".htm"} = 1;                     # 拡張子 .htm を検索する
 $sufix{".html"} = 1;                    # 拡張子 .html を検索する
となっていますが、その引っかかってしまうスクリプトのファイル名は
どうなっているのですか?
# 正しくは suffix です。fが足りない。

のほ 1999/08/04(水) 00:13:33
ごめんなさい。字足らずでした
マッチするのは、検索するhtmlファイルの中の
タグやJavaScriptです。
ブラウザで表示される部分だけ
マッチさせるのはできないかな?
ということでした。すいません

Aurai 1999/08/04(水) 00:49:08
if ($line =~ /<SCRIPT/i) { javascripting = 1; }
if ($line =~ /</SCRIPT/i) { javascripting = 0; }
if (javascripting) { next; };
$line =~ s/<.*>//g;

こんな処理をオリジナルの224行あたりに挿入するとどうでしょう
未確認ですが(^^;

のほ 1999/08/04(水) 01:05:20
サーバーエラーが出てしまいました

エラーの内容です
perl wwwsrch.cgi
Can't modify constant item in scalar assignment at wwwsrch.cgi line 226, near "1;"
Bareword found where operator expected at wwwsrch.cgi line 227, near "/</SCRIPT"
        (Missing operator before SCRIPT?)
syntax error at wwwsrch.cgi line 227, near "/</SCRIPT"
syntax error at wwwsrch.cgi line 278, near "}"
Execution of wwwsrch.cgi aborted due to compilation errors.

ふじ 1999/08/04(水) 01:07:44
>if ($line =~ /<SCRIPT/i) { javascripting = 1; }
>if ($line =~ /</SCRIPT/i) { javascripting = 0; }
>if (javascripting) { next; };
>$line =~ s/<.*>//g;
if ($line =~ /<SCRIPT/i) { $javascripting = 1; }
if ($line =~ /<\/SCRIPT/i) { $javascripting = 0; }
if ($javascripting) { next; };
$line =~ s/<.*?>//g;

こうかな?
4行目は最小マッチにしないと
<P>文字列</P>
てなのを丸ごと消し去っちゃいますね。

あと、このやりかただと、<SCRIPT>, </SCRIPT>を書く行は
(他の文字列を含まないように)一行にそれだけを書かないと
旨く行かないけど・・・
#ちゃんとやろうとすると結構面倒ですね。

余りファイルが大きくなければ、丸ごと変数に読み込んで、
$line =~ s/<SCRIPT.*?</SCRIPT>//gi;
とする手もあるかも。

ふじ 1999/08/04(水) 01:09:28
あ、訂正。
>$line =~ s/<SCRIPT.*?</SCRIPT>//gi;
$line =~ s/<SCRIPT.*?</SCRIPT>//sgi;
ですね。s オプションを付けないと . が改行文字にマッチしないから。

のほ 1999/08/04(水) 01:18:53
[[解決]]
レスして下さったみなさん、ありがとうございます
無事にうまくいきました。
ほんと感謝です
それでは。

[上に] [前に] [次に]