アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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

※実際に動かしていません。考え方だけ理解してもらえれば幸いです。
※用語が多いとレスポンスが悪いので何かしらの対策が必要です。
    • good
    • 0

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

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確かにそうすれば早いのですが、それだと第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

という感じで一応実現は出来ました。
ですがこの方法だとたくさんの文字列を対象にする場合長くなってしまいます。
コンパクトにまとめる方法はないのでしょうか。

お礼日時:2006/01/07 14:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!