我正在对字符串进行搜索和替换。
如果我的示例字符串是
我的名字是马修·斯科特·海尔伍德
然后当函数运行时搜索o
输出变为(为了便于阅读,拆分为多行)
My name is
Matthew
Sc<span class="highlight">o</span>tt
Hailw<span class="highlight">o</span><span class="highlight">o</span>d
那部分工作得很好。
我的css课然后有
.highlight{
font-weight: bold;
background-color: yellow;
border: 1px dotted #a9a9a9;
}
这也很完美。
但在双字母的情况下,例如oo
姓氏中的中间边框厚两倍。
我要做的是:如果有两个边框,则将中间边框全部删除,或者更有可能的是使两个边框合并为一个边框。
我的php函数是
function highlight($haystack, $needle,
$wrap_before = '<span class="text_highlight">',
$wrap_after = "</span>"){
if($needle == '')
return $haystack;
$needle = preg_quote($needle);
return preg_replace("/({$needle})/i", $wrap_before."$1".$wrap_after, $haystack);
}