php - How can I replace array matches within a string with tags to highlight, but never overlap tags? -
if string is:
once upon midnight dreary, while pondered, weak , weary, on many quaint , curious volume of forgotten lore, and wanted highlight following strings (sorted string length prefer longer string matches) :
ponder,weary,weak,ary,red,we i want end with:
once upon midnight dre<span>ary</span>, while <span>ponder</span>ed, <span>weak</span> , <span>weary</span>, on many quaint , curious volume of forgotten lore, how can avoid (as simple str_replace() might lead me)?
once upon midnight dre<span>ary</span>, while <span>ponde<span>r</span>ed</span>, <span><span>we</span>ak</span> , <span><span>we</span><span>ary</span></span>, on many quaint , curious volume of forgotten lore,
use word boundaries:
$s = <<< eof once upon midnight dreary, while pondered, weak , weary, on many quaint , curious volume of forgotten lore, eof; echo preg_replace('/(^|\s)(weary|weak|we|ary)\b/i', '$1<span>$2</span>', $s); output:
once upon midnight dreary, while pondered, <span>weak</span> , <span>weary</span>, on many quaint , curious volume of forgotten lore,
Comments
Post a Comment