Highlight a Substring

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

       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
               $quotedSearch=preg_quote($search,'/');
               //generate regex-search-pattern
               $checkPattern='/'.$quotedSearch.'/'.$modifier;
               //generate regex-replace-pattern
               $strReplacement='$0';
               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.

Comments

  1. User Avatar
    feha
    Permalink to comment#

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

    anywhere within replace code …

    regards
    feha

  2. User Avatar
    pandaboy
    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;
    }

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.

Submit a Comment

icon-closeicon-emailicon-linkicon-menuicon-searchicon-tag