Grow your CSS skills. Land your dream job.

Last updated on:

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. Permalink to comment#

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

    anywhere within replace code …

    regards
    feha

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

Leave a Comment

Posting Code

Markdown is supported in the comment area, so you can write inline code in backticks like `this` or multiline blocks of code in in triple backtick fences like this:

```
<div>Example code</div>
```

You don't need to escape code in backticks, Markdown does that for you. If anything screws up, contact us and we can fix it up for you.

*May or may not contain any actual "CSS" or "Tricks".