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

Popular posts from this blog

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -

python 3.x - Mapping specific letters onto a list of words -