PHP、MYSQL和WordPress编程散记
访问:61热度:*****
为了解决StatPress存在的中文乱码问题并清除无效spider信息,me下功夫K了不少php、mysql以及WordPress的编程信息。怕下次再重新学习一道,记录一下知识点,聊以备忘。一、PHP
连接字符串使用.,比如$nome.”|”.urldecode($tab[1])。
调用变量用$,函数则直接调用。
字符串处理的一些常用函数。strpos寻找字符串中某字符最先出现处,strrpos寻找字符串中某字符最后出现处,这两个函数都反馈整数值,如果没有找到则返回false;strrchar则返回字符最后出现处至结尾的子字符串,strstr则返回搜索字符串最后出现处至末尾的子字符串;substr取部分字符串,string substr(string string, int start, int [length]);start和length如果是负数则从末尾算起;ereg用正则表达式对字符串进行比较或返回拆分后的数组,eregi同ereg,只是大小写无关,ereg_replace和eregi_replace按照一定的规则进行替换;str_replace替换特定的子字符串,str_replace(”%body%”, “black”, “<body text=%body%>”);。
处理url的函数有urlencode和urldecode,前者把”为什么”转为%CE%AA%CA%B2%C3%B4,后者再把它转回来。编码是为了适应浏览器对url的处理规则, 对字符串多解码一次也没什么影响,还是原样。还有个函数是parse_url,返回数组,可以通过component调用处理结果,支持的component有scheme、host、port、user、pass、query、fragment。
iconv可以把字符串在不同的字符集间进行转换,比如iconv(”gb2312″,”utf-8″,$str)。
gb2312的字符encode后占两位,也就是有两个%,而utf-8则是三位,每个字有三个%,示例:为什么如何使utf-8则encode后为%E4%B8%BA%E4%BB%80%E4%B9%88,共9位,如果是gb2312则为%CE%AA%CA%B2%C3%B4,只有6位。
if中的条件判断语句不能用=而是==,否则就直接赋值了,比如$nome == “Baidu”。
explode函数把由特定间隔符分割的字符串拆解成数组,比如$str = “wd=home”,$array = explode(”=”,$str)后得到array,其中array[0]=wd,array[1]=home。
count则统计数组中元素的个数,count($array)的话就是2。
调试函数在,怎么忽然就该页为空了(在浏览器中啥都不显示),试了几次都不行。想想刚才都做了什么,也就是更改了页面的charset,从gb2312到utf-8,另外就是增加了两行代码。把代码删除,问题依旧;把charset改回去,还是不行。于是就怀疑是不是服务器不稳定,坏了。重新启动,问题居然依旧。这时候才想到去查服务器的log。一看不打紧,全是500,呵呵,标准的服务器内部错误,并且提示PHP Parse error: syntax error, unexpected T_STRING 在某个文件中云云。Google了下,还是没啥概念。在搜索结果中转来转去,忽然有点感觉了,还是代码出了问题,php无法解析导致的。再次检查,晕,还真是,后面加的两行代码导致的。调用函数居然没有用括号括住参数,具体如此println iconv(”gb2312″,”utf-8″,$stem);呵呵晕死。加上应该的括号后变成了这样println(iconv(”gb2312″,”utf-8″,$stem));搞定!
date是用来输出时间日期为特定形式的函数,具体的时间日期值通过mktime获得。date_default_timezone_set(’Asia/Shanghai’);居然只支持Shanghai、Chongqing等,但没有北京。$startday = mktime(0,0,0,2,30,2008);居然也有效,不过生成的日期是2008年3月1日,自动处理了。(strtotime(”now”)-$startday)/86400;获得从某特定日期到现在的所过天数。
二、MYSQL(一)不知道PHP的函数是否可以直接用在SQL语句中,只好把要处理的记录全查出来后根据id一条条进行处理,示例代码如下: $qry = $wpdb->get_results(”SELECT id, urlrequested FROM $table_name WHERE (urlrequested is not null) and (urlrequested != ”)”); print “…”.count($qry).” select-ed; “; foreach ($qry as $rk) { $tmpstr [...]
No Comments »
Filed under: 网络技术, 软件开发
