如果我搜索tOm ArNfElD并且$variable是“Tom Arnfeld”,我会LIKE在 MySQL 中得到很好的结果形式(不区分大小写)。
如何将匹配的文本包装在$variablea<span></span>中以突出显示与查询匹配的搜索部分?我需要保留原来的情况$variable。
如果我搜索tOm ArNfElD并且$variable是“Tom Arnfeld”,我会LIKE在 MySQL 中得到很好的结果形式(不区分大小写)。
如何将匹配的文本包装在$variablea<span></span>中以突出显示与查询匹配的搜索部分?我需要保留原来的情况$variable。
我会使用正则表达式:
$text = preg_replace('~(' . preg_quote($search, '~') . ')~i', '<span>$1</span>', $text);
还有其他方法,例如一种灵魂融合建议(str_ireplace()):
$text = str_ireplace($search, '<span>' . $search . '</span>', $text);
$textToPrint = preg_replace("/({$variable})/i","<span class"myclass">$1</span>,$text);
这可能会有所帮助
如果str_ireplace()要替换整个字符串或将 LIKE 参数转换为正则表达式并使用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);