我正在做一个搜索系统,在这个系统中我显示搜索结果,但也有一些文本以搜索词开头.
但我有一个问题,我不知道如何解决它.
问题是:当我搜索某个单词并且我的文本的最后一个单词有一个重音时,最后一个单词看起来很奇怪,或者我有这个"&"或" ".
你能帮我理解这里有什么问题吗?
我的问题代码:
$search = $url[1];
$read = $pdo->prepare("SELECT * FROM pages WHERE title LIKE ? OR content LIKE ? LIMIT ?,?");
$read->bindValue(1, "%$search%", PDO::PARAM_STR);
$read->bindValue(2, "%$search%", PDO::PARAM_STR);
$read->bindParam(3, $begin,PDO::PARAM_INT);
$read->bindParam(4, $max,PDO::PARAM_INT);
$read->execute();
$searchPos = stripos($result['content'],$search);
$searchLen = strlen($search);
$result_text = '"'.substr($result['content'], $searchPos, $searchLen + 35).'..."';
echo '<p>'.strip_tags($result_text).'</p>';
Run Code Online (Sandbox Code Playgroud)
(并使用tinymce编辑器插入数据库)
使用tinymce在数据库中插入内容我这样做:
$f['content'] =$_POST['content'];
Run Code Online (Sandbox Code Playgroud)
然后我插入如下:
$insert->bindParam(4,$f['content']);
Run Code Online (Sandbox Code Playgroud)
问题是您使用非多字节函数处理多字节UTF-8字符串.
这是您修改的代码,以便与UTF-8一起正常工作:
$search = $url[1];
$read = $pdo->prepare("SELECT * FROM pages WHERE title LIKE ? OR content LIKE ? LIMIT ?,?");
$read->bindValue(1, "%$search%", PDO::PARAM_STR);
$read->bindValue(2, "%$search%", PDO::PARAM_STR);
$read->bindParam(3, $begin,PDO::PARAM_INT);
$read->bindParam(4, $max,PDO::PARAM_INT);
$read->execute();
$searchPos = mb_stripos($result['content'],$search,0,'utf-8');
$searchLen = mb_strlen($search,'utf-8');
$result_text = '"'.mb_substr($result['content'], $searchPos, $searchLen + 35, 'utf-8').'..."';
echo '<p>'.strip_tags($result_text).'</p>';
Run Code Online (Sandbox Code Playgroud)
注意mb_*
功能用法:
归档时间: |
|
查看次数: |
245 次 |
最近记录: |