• ベストアンサー

特定の文字列を抜き出す方法

またまた失礼します。 検索フォームにて検索ワードを打ち込み、データベース内で検索をかけ、検索にヒットしたテーブルの情報を表示するページを作っています。 そこで、専門用語が表示された際にその語句にリンクを張り、別ウインドウにて解説ページを開きたいと思っています。 例えば検索にヒットしたテーブルの「case1」フィールドのレコード内に「Hello」という文字列があった場合、「Hello」という文字列にリンクを張りたいのです。 分かる方がいらっしゃいましたらどうかご教授下さい。

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

>コンパクトにまとめる方法はないのでしょうか。 専門用語自体をデータベースにまとめればいいんじゃないですか? たとえば、以下のようなテーブルを作ってrs_wordというレコードセットに読み込むとします。 Word  | Link --------+------------------ Hello  | xxx.html#hello Morning | xxx.html#morning で、ASPで次のようなコードを処理します case = rs("case") do while rs_word.EOF case = Replace(case, rs_word("Word"), "<a href=" & rs_word("Link") & ">" & rs_word("Word") & "</a>") Loop Response.Write case ※実際に動かしていません。考え方だけ理解してもらえれば幸いです。 ※用語が多いとレスポンスが悪いので何かしらの対策が必要です。

その他の回答 (1)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

レコード内の"Hello"と言う文字を"<a ~>Hello</a>"に置き換えて出力すればいいのでは?

sakasama0rska
質問者

お礼

回答ありがとうございます。 確かにそうすれば早いのですが、それだと第3者がデータベースにデータを追加する際に面倒で、知識がないと間違える可能性が高いと思うのです。 とりあえず私の知識を振り絞って i1 = Instr(rs("case"),"Hello") i2 = Instr(rs("case"),"Morning") i = i1 + i2 If i>1 Then case1 = Replace(rs("case"),"Hello","<a target=_brank href=***.html#hello>Hello</a>") case2 = Replace(case1,"Morning","<a target=_brank href=***.html#morning>Morning</a>") Response.Write case2 Else End If という感じで一応実現は出来ました。 ですがこの方法だとたくさんの文字列を対象にする場合長くなってしまいます。 コンパクトにまとめる方法はないのでしょうか。

関連するQ&A