PHP: 依位址(位置)做 Keyword Bolding


之前有某長輩的需求, 我丟給他一串文字, 他會傳一串文字(結果) 和 一個多維的 array, 此 array 裡面存放的是要加上 html tag 做 bold 效果的位址.(我是比較喜歡直接用 preg_replace 或 str_replace 來直接對 keyword 做這種事, by position 就需要另外寫本篇文章的 function. XD)

流程大概是這樣: (看起來流程式, 如果 B 直接 bold 好, 就不用寫這個 function 了 XD)

  1. A input "keyword" => B
  2. B "結果文字" + "斷詞 + array(需要 bold 位址)" => A
  3. A 根據 B 回傳 "結果文字" 做 bold

經過測試, 如果是 replace keyword 是單一個字, preg_replace 和 str_replace 的效率會好很多, 但是在 replace 的 keyword 是多個字的狀況沒測過, 或許多個字的狀況會比較好(或許 是我寫的太遜了 Orz).

PS: 多個字的狀況會發生在,  一串文字進去, 然後 接收端 會於 處理那串文字時有做斷詞, 所以前端也需要拿到此段文字斷詞用了哪些詞才可以做 replace 的動作.

此 function 叫 KeywordBold($string, $position_array, $bold_tag='b'), 傳第一個參數是一串文字, 第二個參數是位址的 array, 第三個參數是要 bold 的 tag 名稱. 詳可見程式範例.

完整程式如下:

歡迎取用, 若有 bug 或 更好的, 如果可以, 請盡量能讓我知道~ 萬分感激~ 🙂


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 Programming 並標籤為 。將永久鏈結加入書籤。

發表迴響