3

如果我搜索tOm ArNfElD并且$variable是“Tom Arnfeld”,我会LIKE在 MySQL 中得到很好的结果形式(不区分大小写)。

如何将匹配的文本包装在$variablea<span></span>中以突出显示与查询匹配的搜索部分?我需要保留原来的情况$variable

4

3 回答 3

1

我会使用正则表达式:

$text = preg_replace('~(' . preg_quote($search, '~') . ')~i', '<span>$1</span>', $text);

还有其他方法,例如一种灵魂融合建议str_ireplace()):

$text = str_ireplace($search, '<span>' . $search . '</span>', $text);
于 2010-01-22T17:50:04.283 回答
1
$textToPrint = preg_replace("/({$variable})/i","<span class"myclass">$1</span>,$text);

这可能会有所帮助

于 2010-01-22T17:50:55.837 回答
0

如果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);
于 2010-01-22T17:48:26.653 回答