3

「Tom Arnfeld」を検索するtOm ArNfElDと、MySQL で優れた結果が得られます (大文字と小文字は区別されません)。$variableLIKE

一致したテキストを で囲み、検索のどの部分がクエリに一致したかを強調表示するに$variableはどうすればよいですか? <span></span>の元のケースを保持する必要があり$variableます。

4

3 に答える 3

1

正規表現を使用します:

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

soulmergeが提案したもの(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 に答える