• ベストアンサー

cgiであいまい検索(~を含む)

cgiで完全一致の検索はできましたが、あいまい検索の方法がわかりません。 たとえば、山を含む苗字の人、などがわかりません。 (山という苗字の人、はできます。) おわかりの方、教えてください。 #perlです。

  • CGI
  • 回答数4
  • ありがとう数5

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

  • ベストアンサー
  • namiri_e
  • ベストアンサー率37% (37/98)
回答No.4

>if ($searchkey eq~ m/$FORM{'SYOZOKU'}/;){ これは「eq~」ではなくて「=~」ですね。 (正規表現では文字列でも「=~」を使います) あと、こちらのミスでしたが、ifの後のカッコ内の最後のセミコロンは不要でしたね。 $FORM{'SYOZOKU'}が「総務部経理課」ということは、 $FORM{'NAME'}は「山田太郎」でしょうか。 $searchkeyがフォームから送信された内容ということなので、 この検索ワードが、データのどちらの要素にもヒットするようにするには、 if ($FORM{'SYOZOKU'} =~ m/$searchkey/ || $FORM{'NAME'} =~ m/$searchkey/) { &ok; } 又は if ($FORM{'SYOZOKU'} =~ m/$searchkey/) { &ok; } elsif ($FORM{'NAME'} =~ m/$searchkey/) { &ok; } でいいと思います。 所属の方のみにヒットさせたい場合は後半部分をカットすればいいはずです。

KODAMAR
質問者

お礼

できました! ありがとうございます! 正規表現ではeqではなく=使うんですね。(==とも違いますよね?) 両方から検索の方法まで教えていただいて本当にありがとうございました。

その他の回答 (3)

  • namiri_e
  • ベストアンサー率37% (37/98)
回答No.3

再びnamiri_eです。 >#$searchkey =~ /^$searchkey.+/; >#$searchkey =~ m/$searchkey/; >$searchkey =~ /.*$searchkey.*/; > >if ($searchkey eq $FORM{'SYOZOKU'}){ >&ok; 正規表現をそのまま裸で使っているのですか? 500エラーは出てませんか? それと、$FORM{'SYOZOKU'}はフォームから送信された語句ですよね。 すると$searchkeyはデータファイルの、例えば「山田太郎」などが入っているのですか? その場合、 フォームから送信された$FORM{'SYOZOKU'}とマッチするものを取り出すのなら、 if ($searchkey =~ m/$FORM{'SYOZOKU'}/;) { &ok; } とすればいいと思いますよ。 できれば、それぞれの変数の内容を教えていただければ助かります。

KODAMAR
質問者

お礼

何度もありがとうございます。 if ($searchkey eq~ m/$FORM{'SYOZOKU'}/;){ としてみましたが、エラー(Internal Server Error)でした。 >できれば、それぞれの変数の内容を教えていただければ助かります。 すいませんでした。 $searchkey:フォームで入力された検索キーです。 $FORM{'SYOZOKU'}:これはログファイルの中に入っているデータです。 (所属のデータ) NAME=山田太郎&SYOZOKU=総務部経理課 というようなログでしたら、「総務部経理課」が$FORM{'SYOZOKU'}になります。 $searchkeyは検索するために入力された文字データですので、 たとえば、「経理課」と入力されたら 経理課が$searchkeyになります。 おわかりいただけたでしょうか?

  • namiri_e
  • ベストアンサー率37% (37/98)
回答No.2

>$searchkey =~ /^$searchkey.+/; これだと「山」で検索したときには、 「山ではじまる」ものだけにマッチしませんか? ただ単に「山を含む」のでしたら $searchkey =~ m/$searchkey/; ではどうでしょう。 やって見たことはないですが $searchkey =~ /.*$searchkey.*/; こんなのでもできるかもしれません。

KODAMAR
質問者

お礼

回答ありがとうございます。 3つともやってみましたが、全部ダメでした。 (一致するものを入れた場合はきちんと結果が出る) #$searchkey =~ /^$searchkey.+/; #$searchkey =~ m/$searchkey/; $searchkey =~ /.*$searchkey.*/; if ($searchkey eq $FORM{'SYOZOKU'}){ &ok; こんな感じにしてあります。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

$name =~ /^山.+/ でしょうか?

KODAMAR
質問者

お礼

回答ありがとうございます。 検索キーが変数ですので、以下のようにしてみました。 $searchkey =~ /^$searchkey.+/; ですが検索結果は出てきません。 なぜでしょうか?

関連するQ&A

  • perl cgiでサ-バ内検索

    perl cgiで 自分のサ-バ内に置いてある*.c,*.h等の ソ-スファイル内のkeyword検索(文字列等)の できる無料perl cgiを探しています。 URLの検索するcgiは、多数見つかったのですが、 デ-タ検索が見つかりません。 どなたか教えて下さい。

  • 検索できるCGI

    「キーワード(複数)/名前/URL」のセットを予め設定し、検索されるとキーワードと一致したものが、設定した名前が設定したURLのリンクとなって一覧になる。と言う感じのCGIを探しています。 具体的に・・・ 「海,太陽/海の画像/http://abc.com/xx.html」 「太陽,夏/夏の画像/http://abc.com/yy.html」 と設定しておき、「太陽」と検索すると ・海の画像(http://abc.com/xx.htmlにリンク) ・夏の画像(http://abc.com/yy.htmlにリンク) と一致したリンクが一覧で表示されるようにしたいです。 できれば、結果のページもカスタマイズしたいです。 こんなことが出来るCGIの配布場所をご存知の方、お願いします!! これをこんな風に改造すれば出来そう、などでも是非教えて下さい! よろしくお願いします。

    • 締切済み
    • CGI
  • cgiからcgiを呼び出す方法

    perlのcgi製作を始めて7日目の素人で恐縮ですが、教えてください。 タイトルのキーワードで検索し、いろいろ試しておりますがうまく動作しません。 ■試した例 exec("./cgi A.cgi") <!--#exec cgi="./cgi A.cgi"--> もともと単体で動作していたcgi Aに対して新たにcgi Bを作成し、 cgi Bからcgi Aを呼び出したいのですが、うまくいきません。  cgi A:アンケート回答フォームのようなもの  cgi B:認証フォーム(コードを入力してDB内のデータと一致したらcgi Aを呼び出したい) 自分のPCにApacheをインストールし、ローカルで実行しております。 cgi Bはcgi Aを呼び出す部分をコメントアウトすれば動作します。 どなたか良きアドバイスをよろしくお願いします。

    • ベストアンサー
    • CGI
  • 検索CGIでいいのを知りませんか?

    今、CGIでHPの中においてあるtxt内の文章や 言葉を検索でき、また検索結果が 見やすいCGIを探してます。どなたかお勧めのを ご存知の方がいらっしゃいましたらよろしくおね がいいたします

  • Perl(cgi)からPerl(cgi)への引数

    (1)Perl(cgi)から(2)Perl(cgi)へ引数(データ)を渡す方法を教えてください。 プログラムの流れとしましては、 (1):データベースを検索&該当結果の番号をリンクで表示 (2):(1)でクリックしたリンクと対応する結果を表示 となっております。 また、セキュリティの事を考えて「POST」で送りたいと考えています。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • モバイルアドセンスcgi/perlでの設置方法

    グーグルのモバイルアドセンスを自分のHPに設置したいのですが、phpはサーバーが対応しておらず、cgi/perlでしか設置できないみたいです。設置方法を検索してもphpの設置方法しか見当たりませんでした。cgi/perlでの設置方法を解る方がいればご教授いただけないでしょうか? ぜひ宜しくお願いします。

  • CGI内を検索するって出来るんですか???

    CGIの中にあるデータを検索させるプログラムってあるんでしょうか? 詳しく教えてくれる方お願いします!!!

    • 締切済み
    • CGI
  • KENTさんのところのサイト内検索CGIについて

    KENTさんの書籍「KENTとはじめるCGI厳選Perlスクリプト集」というものの中から、サイト内検索CGIを使用してみようと 思ったのですが、ちょっと形態を自分なりに変更しているんですが、わからなくなってしまったので教えてください。 現在はローカルでテスト中なのでCGIファイル自体は127.0.0.1の中にあります。 実際に検索を行いたいファイルはWeb上にあるので、そちらの指定は 「http://www.***」というようにしています。 # 対象ディレクトリ # → / からのフルパスで指定もよい $finddir = "http://www.***"; # 上記「対象ディレクトリ」のURL # → 最後は / で閉じない $findurl = "http://www.***"; と変更したんですが、「ヒットしませんでした」という結果に…。 検索したいキーワードはきちんと表示されてるのでデータの送受信はうまくいってると思うんですが。 もちろんKENTさんのところで質問した方がいいのでしょうが、できるだけ回答が早く欲しいので、 みなさんに聞いてもらおうと思いこちらで質問しました。 おわかりの方いらっしゃったら教えてください。 お願いします。

    • ベストアンサー
    • CGI
  • namazu検索cgiの、Perl版が以前出回っていたかと思いますが、

    namazu検索cgiの、Perl版が以前出回っていたかと思いますが、 既にサイトが閉鎖されてしまったようで、入手困難なようです。 どちらかで入手できないでしょうか? または、上記プログラムでなくてもレンタルサーバー、FTP権限 のみにてnamazu検索を稼働させる方法があれば、それでもよいのですが、 おそらく不可能ではないかと・・・

  • kmf_cgiについてですが・・・

    『kmf_cgi 10.7』の『ReadMe』に ■設置方法 パーミッションを、index.cgiは[755]、perl-lib.plは[644]に設定 とありました。 実際に設定しようと思ったのですが、 『index.cgi』、『perl-lib.pl』のそれぞれの どこにパーミッションという欄があるのかわかりません。 誰かわかる方、教えていただけませんか??

専門家に質問してみよう