如果我搜索tOm ArNfElD
而$variable
是“Tom Arnfeld”,我会在MySQL({1}}中获得很好的结果(不区分大小写)。
如何使用LIKE
将$variable
中匹配的文字换行以突出显示搜索的哪个部分与查询匹配?我需要保留<span></span>
的原始案例。
答案 0 :(得分:1)
我会使用正则表达式:
$text = preg_replace('~(' . preg_quote($search, '~') . ')~i', '<span>$1</span>', $text);
还有其他方式,例如soulmerge suggested(str_ireplace()
):
$text = str_ireplace($search, '<span>' . $search . '</span>', $text);
答案 1 :(得分:1)
$textToPrint = preg_replace("/({$variable})/i","<span class"myclass">$1</span>,$text);
这可能会有所帮助
答案 2 :(得分:0)
如果要替换整个字符串或将LIKE参数转换为正则表达式并使用str_ireplace()
(不要忘记preg_replace()
字符串,则可以使用preg_quote()
虽然)。
使用正则表达式的示例:
$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);