Highlight a Substring

       $text='Would you be so kind to highlight css-tricks.com in this string?';

       echo textHighlight($text,$search);

       //Performs a regex-texthighlight
       function textHighlight($text,$search,$highlightColor='#0000FF',$casesensitive=false)
               $modifier=($casesensitive) ? 'i' : '';
               //quote search-string, cause preg_replace wouldn't work correctly if chars like $?. were in search-string
               //generate regex-search-pattern
               //generate regex-replace-pattern
               return preg_replace($checkPattern,$strReplacement,$text);

This code performs a regular-expression-replace to add a span-tag with a definable color. Can be used either for case-sensitive and case-insensitive replacements.

Deploy a static site in one minute
Build and deploy a CMS-enabled site with Gatsby in just a few clicks. It's free.


  1. User Avatar
    Permalink to comment#

    This will not work …
    you are not using the : $highlightColor

    anywhere within replace code …


  2. User Avatar
    Permalink to comment#

    @feha, it maybe too late for you to see this, but I found this in the php_manual on preg_replace in the comments – simpler and works fine for most cases:

    function highlight($haystack,$needle)
    $haystack=preg_replace("/($needle)/i","<span style='font-weight:bold'>\${1}</span>",$haystack);
    return $haystack;

Leave a Comment

Posting Code!

You may write comments in Markdown. This makes code easy to post, as you can write inline code like `<div>this</div>` or multiline blocks of code in triple backtick fences (```) with double new lines before and after.

Code of Conduct

Absolutely anyone is welcome to submit a comment here. But not all comments will be posted. Think of it like writing a letter to the editor. All submitted comments will be read, but not all published. Published comments will be on-topic, helpful, and further the discussion or debate.

Want to tell us something privately?

Feel free to use our contact form. That's a great place to let us know about typos or anything off-topic.