Skip to content

Instantly share code, notes, and snippets.

@topdown
Last active December 15, 2015 01:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save topdown/5178728 to your computer and use it in GitHub Desktop.
Save topdown/5178728 to your computer and use it in GitHub Desktop.
Regex find words in string This regex is capable of finding specific words in string and ignoring words in HTML attributes so when replacing with HTML it does not break the code.
<?php
// Updated, the other expression misses stuff like nulla.jpg which broke images
// (?<!-)\b(ipsum|nulla|Nulla)\b(?!\/|\"|\.[a-zA-Z0-9])
//----------------------------
// Example string
//----------------------------
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc feugiat laoreet augue, non congue lectus mattis nec. Etiam augue risus, consequat et sodales at, scelerisque id orci. Sed posuere egestas tristique. Aenean fermentum volutpat nisi, nulla vitae convallis risus mollis vel. <a title="nulla" href="http://nulla/nulla">Nulla</a> Nulla convallis venenatis tortor, nec congue augue hendrerit quis. Fusce augue metus, venenatis posuere ornare quis, scelerisque sed quam. <img alt="ipsum" src="ipsum.png" title="ipsum">Nunc nec adipiscing justo. Morbi eget ultrices diam. Proin nisl nisl, aliquet quis aliquet non, sollicitudin ultricies lectus. Etiam malesuada mauris quis sem varius hendrerit. Etiam eu tempor magna. Donec quam metus, elementum eget sollicitudin adipiscing, porttitor dignissim orci. In consectetur nulla sed lorem venenatis ac condimentum nisl eleifend. Nunc ullamcorper euismod urna vel ullamcorper. Aenean et luctus tellus. Nunc rhoncus consequat risus, vel condimentum lorem pulvinar et. </p>
<?php
//---------------------------
// Finds
//---------------------------
// ipsum
// nulla
// Nulla
// Nulla
// nulla
// Case insensitive PHP Example (highlight search values in a page)
// $search_string would be taken from the URL query param for example if you were highlighting searches which is why the +
$search_string = "ipsum+nulla";
$keys = explode("+", $search_string);
$text = '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc feugiat laoreet augue, non congue lectus mattis nec. Etiam augue risus, consequat et sodales at, scelerisque id orci. Sed posuere egestas tristique. Aenean fermentum volutpat nisi, nulla vitae convallis risus mollis vel. <a title="nulla" href="http://nulla/nulla">Nulla</a> Nulla convallis venenatis tortor, nec congue augue hendrerit quis. Fusce augue metus, venenatis posuere ornare quis, scelerisque sed quam. <img alt="ipsum" src="ipsum.png" title="ipsum">Nunc nec adipiscing justo. Morbi eget ultrices diam. Proin nisl nisl, aliquet quis aliquet non, sollicitudin ultricies lectus. Etiam malesuada mauris quis sem varius hendrerit. Etiam eu tempor magna. Donec quam metus, elementum eget sollicitudin adipiscing, porttitor dignissim orci. In consectetur nulla sed lorem venenatis ac condimentum nisl eleifend. Nunc ullamcorper euismod urna vel ullamcorper. Aenean et luctus tellus. Nunc rhoncus consequat risus, vel condimentum lorem pulvinar et. </p>';
$text = preg_replace('/(?<!-)\\b(' . implode('|', $keys) . ')\\b(?!\\/|\\"|\\.[a-zA-Z0-9])/ui', "<span class=\"search-excerpt\">$0</span>", $text);
echo $text;
// The above should find the correct results and wrap them in the specified replacement <span> tags
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment