小弟用php與jquery做了一個自我學習英文的網站,如下圖
因為句子中有些英文單字不認識,希望將不認識的英文單字新增進資料庫後,
以後只要句子中出現這個字,系統便能自動判斷此字已有在資料表中,
滑鼠點按後就可以出現它的解釋,效果如以下兩個效果皆可以
一、https://penghu.info/OB1F10AF08C936E984B5
在這個網站中,有些詞會自動跑出紅色底線,代表資料表中有相關的連結
二、https://bootstrap.hexschool.com/docs/4.2/components/tooltips/
或者如bootstrap中的「工具提示」效果
想不出太好的做法,請益各位高手前輩。
我不知道你是否了解所謂的「bb code」的應用。就先當你不了解。
所謂bbcode的應用。就是文章內容內有特殊的字段。會自動轉義成另一種模式。
如
[url=http://xxx.xxx.xxx]
在輸出到頁面會轉譯成
<a href=http://xxx.xxx.xxx>http://xxx.xxx.xxx</a>
在了解以上的情況。其實你的問題就大致上可以解決了。
大多數而言,關鍵字搜尋我還會搭配全文索引的模式來做定義處理。這是另外一門學問,我就先不教了。
一般來說,我會用如下的程式碼處理。
<?php
$getData = (從資料庫取出資料);
foreach($getData AS $_d){
$s[] = $_d['key']; //準備要比對的key
$c[] = '<span class="txtkey">'.$_d['data'].'</span>'; //準備要轉換的內容
}
$txt = (取得內容);
str_replace($s,$c,$txt);
也就是說,將關鍵詞取出後做取代成我要的東西。一般來說,我會直接包span。方便處理css跟連結控制。
謝謝「浩瀚星空」兄的解惑,
所以$getData是要先從資料庫中取出所有的英文單字,然後在每一個頁面的文字載入時,再將內容進行str_replace比對與取化?
是的,我是外行人,只是純粹喜歡程式,還真不懂bbcode與全文索引的概念,繼續精進。
那你會有點跳級了喔。
全文索引是為了降低搜尋及比對詞做處理的。
你總不可能每一次要將所有的關鍵詞都拿出來比對吧。
如果關鍵詞達10萬以上,那會死人的。
所以一般會先借用一下全文索引的特性取出可以比對及取代的關鍵詞。再做取代處理的。
只是全文索引這一堆又是另外一門學問就是了。講解出來會講三天三夜也說不完的。
(ps:「全文索引」....騙人,用一秒就說完了)
我花了2秒 XD
為了好維護以及效能考量,不太建議在輸出結果時做這樣事情。我反而建議在資料庫設計跟程式都要考慮:
這樣做的理由: