首页 > 编程技术 > php

uchome中模糊搜索的实现与分页bug的修复

发布时间:2016-11-25 17:38

本文章来给各位同学详细介绍关于uchome中模糊搜索的实现与分页bug的修复的一些具体方法,有需要了解的朋友可参考本文章来设置。

在默认uchome中好友的搜索是无法模糊搜索的,不知为何,有的人无法记住好友的全名便不可能从搜索中找到该好友了,这对用户体验是非常不好的。

经过研究改动如下代码就可以实现uchome的模糊搜索功能了。

在source中cp_friend.php的文件中找到如下代码修改$wherearr[]中的语句如下即可:

 代码如下 复制代码
 
if($searchkey = stripsearchkey($_GET['searchkey'])) {
            $wherearr[] = "(s.name like '%"."$searchkey"."%' OR s.username like '%"."$searchkey"."%')";
        } else {
            foreach (array('uid','username','name','videostatus','avatar') as $value) {
                if($_GET[$value]) {
                    $wherearr[] = "s.$value='{$_GET[$value]}'";
                }
            }
}

搜索分页bug的修复

使用中发现ucenter的用户搜索如果加时间去搜索的话,列表中的分页是错误的,ucenter1.5和1.6均有这个错误,不知道官方为什么不解决这个问题。经过研究,解决方法如下:
打开control/admin下的user.php
寻找代码

 代码如下 复制代码

$multipage = $this->page($num, UC_PPP, $_GET['page'], ‘admin.php?m=user&a=ls&srchname=’.$srchname.’&srchregdate=’.$srchregdate);

将其改成

 代码如下 复制代码

$multipage = $this->page($num, UC_PPP, $_GET['page'], ‘admin.php?m=user&a=ls&srchname=’.$srchname.’&srchregdatestart=’.$srchregdatestart.’&srchregdateend=’.$srchregdateend);

即可完成修复。

在32位系统,ip2long不能转换IPv6,但您可以转换ip2bin和bin2ip 这个函数转换为IPv4和IPv6,返回false,如果是无效的

实例程序

 代码如下 复制代码

<?php
function ip2bin($ip)
{
    if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false)
        return base_convert(ip2long($ip),10,2);
    if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false)
        return false;
    if(($ip_n = inet_pton($ip)) === false) return false;
    $bits = 15; // 16 x 8 bit = 128bit (ipv6)
    while ($bits >= 0)
    {
        $bin = sprintf("%08b",(ord($ip_n[$bits])));
        $ipbin = $bin.$ipbin;
        $bits--;
    }
    return $ipbin;
}


function bin2ip($bin)
{
   if(strlen($bin) <= 32) // 32bits (ipv4)
       return long2ip(base_convert($bin,2,10));
   if(strlen($bin) != 128)
       return false;
   $pad = 128 - strlen($bin);
   for ($i = 1; $i <= $pad; $i++)
   {
       $bin = "0".$bin;
   }
   $bits = 0;
   while ($bits <= 7)
   {
       $bin_part = substr($bin,($bits*16),16);
       $ipv6 .= dechex(bindec($bin_part)).":";
       $bits++;
   }
   return inet_ntop(inet_pton(substr($ipv6,0,-1)));
}
?>

本文章来给各位介绍我在使用淘宝 API 返回的json数据无法用json_decode的问题的一些解决办法介绍,大家可参考。

如题,这个问题困扰我已久。。。经过自己的多次尝试,和到网上搜索,我已大概猜测到是字符的问题,论坛上的朋友说,PHP的json_decode对json数据要求非常严格,必须是{“key”:”value”}的双引号包围才行,而且,对一些特殊符号不兼容。。。例如UTF-8的 BOM头,或者是C++字符的结束符等等。。。

经过排查,我发现。。。淘宝API返回的json数据(特别是taobao.taobaoke.items.detail.get),之所以json_decode后,结果为null,原因就是返回的数据含有回车符。。。这可能是一些店主在装修时,或者填写店铺描述,商品描述不规范所留下的。。。所以用

 代码如下 复制代码

$json = str_replace(array(“rn”,”n”,”r”,”t”,chr(9),\n),”,$json );      
$json = json_decode($json,true);    

这样就可以解决这个问题了。

本文章晋级人大家介绍phpword中文字符乱码解决办法,希望此文章对各位所有帮助哦。

最近领导要求用php生成word,网上找了很多类啊,函数啊。最终相中phpword。无奈不是国人开发,对中文支持很不友好。经过研究,终于解决了中文乱码,分享出来。

1、用模板word生成word中文乱码解决方案:

打开phpword/Template.php文件,找到$replace = utf8_encode($replace);将其改为$replace =iconv('gbk', 'utf-8', $replace); 即可。

2、直接生成word文档,调用addText对象时中文乱码解决方案:

打开phpword/Section.php文件,找到$givenText = utf8_encode($text);将其改为$givenText = iconv('gbk', 'utf-8', $text);即可。

3、貌似其他方法也类似第解决。

4、注意php文件采用gbk哦。反正我的显示中文了。在网上找了好久,研究了半天才搞定。

本文章来给各位同学介绍file_get_contents不能获取带端口的网址解决办法,有需要了解的同学可参考。


先们来了解file_get_contents() 函数,官方介绍说它是把整个文件读入一个字符串中。


例子

<?php
echo file_get_contents("test.txt");
?>

输出:

This is a test file with test text.

同样此函数还可以用于获取远程服务器上的内容


file_get_contents('http://www.111cn.net');

这样也是没有问题,但是如果我带了端口了就有问题了


例如:


file_get_contents('http://localhost:12345');


没有任何获取。

解决方法是 :关闭selinux

1 永久方法 – 需要重启服务器

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

2 临时方法 – 设置系统参数

使用命令setenforce 0

附:

setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式

php的allow_url_fopen选项是关闭了

原因是我们php.ini中把php的allow_url_fopen选项是关闭了,我们只要把它打开即可。

如果你没有权限打开allow_url_fopen的话我们可使用curl函数的来替换,也是很方法的。

标签:[!--infotagslink--]

您可能感兴趣的文章: