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
[[解決]]
レスして下さったみなさん、ありがとうございます
無事にうまくいきました。
ほんと感謝です
それでは。
[上に]
[前に]
[次に]