php mysql 模糊查询

2024-12-29 11:38:49
推荐回答(5个)
回答1:

原谅我的看错.楼上的朋友.
不过就算你在头文件设了utf-8.就能保证数据库服务器->服务器->客户端都不乱码吗?Mysql我就不清楚了. mssql 就不一定啦. 如果是mssql我建议必须用函数编码.
另我感到怀疑的是楼上的同学 居 然 用 str_split() 函 数 去 拆 分 中 文 字 符 ....我没试过结果.如果结果可行.那使用楼上的同学的吧.毕竟比较简单.我这种比较保险.

瞧俺老孙的法宝.........BINGO 开始

html 页面



php 页面
// php 解码函数
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = mb_convert_encoding(pack("H4",substr($v,-4)),"gb2312","UCS-2");
elseif(substr($v,0,3) == "&#x")
$ar[$k] = mb_convert_encoding(pack("H4",substr($v,3,-1)),"gb2312","UCS-2");
elseif(substr($v,0,2) == "&#") {
$ar[$k] = mb_convert_encoding(pack("H4",substr($v,2,-1)),"gb2312","UCS-2");
}
}
return join("",$ar);
}

// 这里法宝开始 完美解决每个汉字拆分出来

$arr = explode("u",$_GET["fuck"]); //是因为escape编码后每个汉字的开头都是u
$shit = "";
foreach($arr as $value)
{
$value = unescape($value);// 网上找到的php 解码函数
$shit .= "%".$value."%"; //字符串拼接好了可供查询了呵呵
}
$sql = "select * from table where con like ‘$shit’";
//或者 $shit = "'".$shit."'"; 然后$sql = "select * from table where con like“.$shit.;

xxsql_query($sql); // 大功告成! 后面的echo 自己喜欢怎样格式输出就输出呗.

回答2:

我也想得到这样的效果,想好很长时间,只有用标签的方式。就是一篇文章标题,对应设置标签。像“我爱你”,对应的标签可以设置为“我爱,爱你”这两个,单独建一张标签表。这篇文章对应两条标签搜索。表结构为id,文章ID,标签名、。搜索时到标签表中搜索标签名,找到对应的文章ID就出来结果了。

回答3:

这个问题比较麻烦
不过如果是每个字都分的话就没那么麻烦了
可以这样

下面是我刚写的,
你可以把变量$st 加到你的sql语句的最后面
拿下面的例子来说 最后$st的值是 '%你%' or '%是%' or '%谁%' or '%呀%'

我用的是UTF8编码,中文的字符是占三个B
如果你用别的编码的话可以把 第五行的方法里面的第二个参数改成2
header('Content-type:text/html;Charset=utf-8');
$keyword = '你是谁呀';

$re = str_split($keyword,3);
echo '

';
var_dump($re);

$st;
$index=0;
$max = count($re);
foreach($re as $value){
$index++;
if($index == $max) {
$st.='\'%'.$value.'%\'';
}else{
$st.='\'%'.$value.'%\' or ';
}
}

echo $st;

(这个暂时只能解决中文的)
给分

楼下的~~~。。。
我的$keyword也是变量好不好。。。
传过来什么就是什么的

回答4:

like '%我%' or like '%爱%' or like '%你%'

试试这样行不行。

回答5:

试试字符串截取把