【发布时间】:2018-07-12 15:44:43
【问题描述】:
目前,我编写了一个返回名称的 ajax 搜索。到目前为止,一切正常。但是,我想简单地使用<strong> 标签突出显示搜索到的字符/字符串,但保留我从 SQL 中得到的大小写:
Example:
Search Term: M
SQL result: 1. Max Mustermann, 2. Tom Maier
What I want:
<b>M</b>ax <b>M</b>uster<b>m</b>ann
Tom <b>M</b>aier
意思是,我想保留从数据库中获取的案例,只需在字符或字符串周围放置标签。
这是我目前所拥有的,但这不是我想要的。如果我搜索“m”,第一个字符也是小写的,尽管它在数据库中实际上是大写的。
public function highlightKeyword($haystack, $needle)
{
$string = mb_strtolower($haystack);
$string = $this->mb_ucfirst($string);
$string = preg_replace("/(".$needle.")/i", sprintf("<strong>".strtolower($needle)."</strong>"), $string);
return $string;
}
public function mb_ucfirst($string, $encoding)
{
$strlen = mb_strlen($string, $encoding);
$firstChar = mb_substr($string, 0, 1, $encoding);
$then = mb_substr($string, 1, $strlen - 1, $encoding);
return mb_strtoupper($firstChar, $encoding) . $then;
}
还有什么想法吗?
【问题讨论】:
标签: php regex string preg-replace