PHP 8.5.0 Alpha 4 available for testing

Voting

: zero plus nine?
(Example: nine)

The Note You're Voting On

sawdust
16 years ago
Here's a different approach to search result keyword highlighting that will match all keyword sub strings in a case insensitive manner and preserve case in the returned text. This solution first grabs all matches within $haystack in a case insensitive manner, and the secondly loops through each of those matched sub strings and applies a case sensitive replace in $haystack. This way each unique (in terms of case) instance of $needle is operated on individually allowing a case sensitive replace to be done in order to preserve the original case of each unique instance of $needle.

<?php
function highlightStr($haystack, $needle, $highlightColorValue) {
// return $haystack if there is no highlight color or strings given, nothing to do.
if (strlen($highlightColorValue) < 1 || strlen($haystack) < 1 || strlen($needle) < 1) {
return
$haystack;
}
preg_match_all("/$needle+/i", $haystack, $matches);
if (
is_array($matches[0]) && count($matches[0]) >= 1) {
foreach (
$matches[0] as $match) {
$haystack = str_replace($match, '<span style="background-color:'.$highlightColorValue.';">'.$match.'</span>', $haystack);
}
}
return
$haystack;
}
?>

<< Back to user notes page

To Top