「Tom Arnfeld」を検索するtOm ArNfElDと、MySQL で優れた結果が得られます (大文字と小文字は区別されません)。$variableLIKE
一致したテキストを で囲み、検索のどの部分がクエリに一致したかを強調表示するに$variableはどうすればよいですか? <span></span>の元のケースを保持する必要があり$variableます。
「Tom Arnfeld」を検索するtOm ArNfElDと、MySQL で優れた結果が得られます (大文字と小文字は区別されません)。$variableLIKE
一致したテキストを で囲み、検索のどの部分がクエリに一致したかを強調表示するに$variableはどうすればよいですか? <span></span>の元のケースを保持する必要があり$variableます。
正規表現を使用します:
$text = preg_replace('~(' . preg_quote($search, '~') . ')~i', '<span>$1</span>', $text);
soulmergeが提案したもの(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);