有一個 PHP 函式可以不分大小寫或重音高亮一個單詞,但回傳的字串將是只有高亮的原始字串?例如:
Function highlight($string, $term_to_search){
// ...
}
echo highlight("my Stri?g", "string")
// Result: "my <b>Stri?g</b>"
提前致謝!
我嘗試了什么:
我嘗試執行一個洗掉所有重音符號和大寫字母的函式,然后使用搜索詞執行“str_replace”,但發現最終結果在邏輯上沒有大寫字母或特殊字符,而我預計它只是普通文本但突出顯示。
uj5u.com熱心網友回復:
您可以使用ICU 庫來規范化字串。然后,在句柄字串中查找術語位置,在原始字串中的正確位置添加 HTML 標記。
function highlight($string, $term_to_search, Transliterator $tlr) {
$normalizedStr = $tlr->transliterate($string);
$normalizedTerm = $tlr->transliterate($term_to_search);
$termPos = mb_strpos($normalizedStr, $normalizedTerm);
// Actually, `mb_` prefix is useless since strings are normalized
if ($termPos === false) { //term not found
return $string;
}
$termLength = mb_strlen($term_to_search);
$termEndPos = $termPos $termLength;
return
mb_substr($string, 0, $termPos)
. '<b>'
. mb_substr($string, $termPos, $termLength)
. '</b>'
. mb_substr($string, $termEndPos);
}
$tlr = Transliterator::create('Any-Latin; Latin-ASCII; Lower();');
echo highlight('Would you like a café, Mister Kàpêk?', 'kaPé', $tlr);
uj5u.com熱心網友回復:
你可以試試 str_ireplace
echo str_ireplace($term_to_search, '<b>'.$term_to_search.'</b>', $string);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/521327.html
上一篇:使用命令migrate-mongoup時如何只選擇一個檔案
下一篇:如何將django'models.py'、'views.py'、'serializers.py'檔案拆分為多個檔案
