如何设定给定字符串中的特定单词的样式? 我用一个函数来设置给定字符串中特定单词的样式,但这不适用于utf-8字符串
header('Content-type: text/html; charset=utf-8');
function bold($string, $word)
{
return preg_replace('/\b'.$word.'\b/', '<strong>'.$word.'</strong>', $string);
}
echo bold('چمستان تا', 'تا');
我该怎么做?我需要根据键入的用户查询在搜索结果中加粗一些关键字/短语
任何帮助将不胜感激
答案 0 :(得分:1)
确保:
/u
修饰符preg_quote
搜索字以防万一使用
preg_replace('/\b'.preg_quote($word,'/').'\b/u', '<strong>'.$word.'</strong>', $string);
作为\b
的替代方法,您可以使用非模糊的单词边界(在允许搜索词之前或之后不使用单词char):
preg_replace('/(?<!\w)'.preg_quote($word,'/').'(?!\w)/u', '<strong>'.$word.'</strong>', $string);
或 - 在空格内强制执行匹配:
preg_replace('/(?<!\S)'.preg_quote($word,'/').'(?!\S)/u', '<strong>'.$word.'</strong>', $string);