如果我搜索tOm ArNfElD
而$variable
是「Tom Arnfeld」,我在MySQL(這是不區分大小寫)中得到了LIKE
的很好結果。將文本 - 不區分大小寫並使用php
如何將$variable
中的匹配文本與<span></span>
包裝在一起以突出顯示搜索的哪個部分與查詢匹配?我需要保留$variable
的原始案例。
如果我搜索tOm ArNfElD
而$variable
是「Tom Arnfeld」,我在MySQL(這是不區分大小寫)中得到了LIKE
的很好結果。將文本 - 不區分大小寫並使用php
如何將$variable
中的匹配文本與<span></span>
包裝在一起以突出顯示搜索的哪個部分與查詢匹配?我需要保留$variable
的原始案例。
$textToPrint = preg_replace("/({$variable})/i","<span class"myclass">$1</span>,$text);
這可能有幫助
如果您要替換整個字符串或將LIKE參數轉換爲正則表達式,並使用preg_replace()
(不要忘記preg_quote()
字符串),則可以使用str_ireplace()
。
例使用正則表達式:
$parts = explode('%', $likeQuery)
foreach ($parts as &$innerString) {
$innerParts = explode('_', $innerString);
foreach ($innerParts as &$part) {
$part = preg_quote($part, '/');
}
// always unset references when you're done with them
unset($part):
$innerString = implode('.', $innerString);
}
// always unset references when you're done with them
unset($innerString):
$regex = implode('.*?', $parts);
$transformedString = preg_replace("/$regex/", '<span>$0</span>', $stringToTransform);
我會使用正則表達式:
$text = preg_replace('~(' . preg_quote($search, '~') . ')~i', '<span>$1</span>', $text);
還有其他的方法太像一個soulmerge suggested(str_ireplace()
):
$text = str_ireplace($search, '<span>' . $search . '</span>', $text);
grrr ...別人發佈它,而我正在寫答案 – Andreas 2010-01-22 17:51:40
完美的作品! – tarnfeld 2010-01-22 17:53:58
這可能是假的,你不會轉義(使用'preg_quote()')'$ variable'。 – 2010-01-22 17:54:12