「Tom Arnfeld」を検索するtOm ArNfElD
と、MySQL で優れた結果が得られます (大文字と小文字は区別されません)。$variable
LIKE
一致したテキストを で囲み、検索のどの部分がクエリに一致したかを強調表示するに$variable
はどうすればよいですか? <span></span>
の元のケースを保持する必要があり$variable
ます。
「Tom Arnfeld」を検索するtOm ArNfElD
と、MySQL で優れた結果が得られます (大文字と小文字は区別されません)。$variable
LIKE
一致したテキストを で囲み、検索のどの部分がクエリに一致したかを強調表示するに$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);