2010-01-22 124 views
1

我建立將包裝與<span>標籤搜索關鍵字進行搜索,我有這樣的代碼工作確定:使用str_ireplace時保留大小寫嗎?

str_ireplace($q,'<span>'.$q.'</span>',$row[name]); 

的問題是,如果Tom用戶搜索是將顯示Tom這是很酷,但如果由於str_ireplace而投入tom,它會顯示tom,這是否有意義?真正的問題是,如果有人輸入tOm aRnFeLd雖然它會搜索好,但美學實際上會顯示在頁面上tOm aRnFeLd

如何保留兩個字符串的大寫字母和小寫字母?有沒有更好的方法來從字符串中打包不區分大小寫的文本?

回答

0

使用stristr擺脫大海撈針,不區分大小寫

$keyword_caseRetained_all = stristr($excerpt, $keyword); 

但返回針和乾草堆的休息,所以你必須使用SUBSTR僅保持針狀部分。開始在位置0,起牀關鍵詞的長度

$keyword_caseRetained = substr($keyword_caseRetained_all, 0, strlen($keyword)); 

現在使用該變量的str_ireplace函數內部

$excerpt = str_ireplace($keyword, '<em>'.$keyword_caseRetained.'</em>', $excerpt); 

一旦你知道了這一點,你可以在一個不錯的大鼠結合線1和2縮小您的代碼。

或將此作爲方法添加到字符串操作類中。

0
  1. 使用stripos()
  2. 插入文本<span>文本的n字符之後獲取短語長度短語的strlen()
  3. 查找發生(其中N是從點#結果2)
  4. 插入文本</span>後文本n值+ M字符(其中N是來自點#2的結果並且M是來自點#1的結果)
  5. 繼續點2-4(使用strpos()的第三個參數-偏移量
相關問題