使用mysql筛选出某字段中文的记录

项目中遇到了一个数据处理的问题,简单的描述一下:字段name中有英文的也有中文的,数据比较庞大,如果使用php处理整个表都要捣鼓一遍,不是很“低碳”。

后来想到了使用mysql的正则,于是上网查了一下,找到了以下的方法:


select * from table where not name regexp '^[1-9A-Za-z]';

这样就可以筛选出来name字段中全部为中文的记录了。
记录一下

javascript简单实现checkbox的全选与反选

今天上网遇到有个网友在论坛问input的checkbox全选和反选的问题,顺手总结了一下,然后写了个简单的jQuery checkbox全选反选插件,希望对大家有用。
如果是简单的实现checkbox的全选与反选可以使用下面的函数:


 function checkall(obj,cName)
 {
     var checkboxs = document.getElementsByName(cName);
     for(var i=checkboxs.length;i--;){
             checkboxs[i].checked = obj.checked;
     }
 }
//使用方法:给全选的按钮加onclick事件:onclick="checkall(this,'all[]');"

再谈Iframe的问题

iframe是可以做的事情非常多,比如通过iframe实现跨域,使用iframe解决IE6下select遮挡不住的问题,通过iframe解决Ajax的前进后退问题,再比如通过iframe实现异步上传。在很早我就写过一篇文章说明了Iframe在IE、firefox下的一些DOM操作。今天结合最近项目中遇见的iframe问题,再来谈谈iframe的一些常见问题解决方案。

IE下iframe背景透明问题

在firefox下,iframe背景默认的是透明的,在IE下默认不是透明的,我们可以使用allowTransparency='true'来设置IE下的iframe为透明,另外我们使用scrolling ='no' ``frameborder='0'分别来实现iframe页面没有滚动条,边框宽度。

IE6下iframe不显示的问题

不得不说IE6是个操蛋的浏览器,尤其是在中国!iframe有的时候在IE6中会出现不显示的问题,主要有以下几种原因,请一一排查:

  1. 可能你的iframe没有设置宽高,例如在table不居中,计算不出来td的高度,会导致这种问题
  2. 尝试使用下面的代码来重新载入IE6下的iframe页面:

    ```javascript

setTimeout(function(){
document.frames[‘fuckIE6’].location.reload();
},0)
```

  1. 传闻iframe标签中不要把src紧跟在iframe之后,也就是<iframe src='js8.in' name='fuckIE6'></iframe>是错误的,不过我没有碰见过类似的问题,为了保险起见,还是不要写成上面的样式为妙。

Sina App Engine开发实例:天气预报的定时短信(一)

新浪的云计算平台(Sina App Engine)已经开发一段时间了,一直处于内测阶段,最近找到一个邀请码,注册了一个SAE,我也上云了!使用SAE并且做了一个微博送祝福的应用。通过crontab的服务实现了在新浪微博以:“@微博送祝福:祝××:祝福的内容”的格式发布微博,可以在5分钟内送出祝福,并且收到@回复的功能。

今天结合张宴提供的飞信API接口,做个定时发送天气预报的SAE应用,算是新浪SAE的教程吧。

Sina App Engine开发实例:天气预报的定时短信(一) | 天气预报的定时短信(二)

广告时间:

新浪微博送祝福方法

1、在发布新浪微博的时候,采用以下格式,会在5分钟之内把您的祝福发送出去,并且收到一个@回复:

@微博送祝福:祝××:祝福的内容

2、登录http://js8.in/love,使用新浪微博账号登陆,然后给自己的粉丝、好友送祝福

每一个祝福都会收到一个@回复,并且具有自己独一无二的永久URL地址,你可以复制发送给自己的好友,要TA知道你送的祝福~

Sina App Engine简介

Google App Engine大家应该不陌生吧,SAE是类似产品,不同的是GAE提供的是Java和python支持,而新浪的SAE提供的是PHP的支持,包括基本的PHP5、mySQL5.,也包括一些高级的应用Crontab(定时任务),memcache(缓存)、SMTP(邮箱服务),新的功能还在添加中。最让我们兴奋的是提供了crontab计划任务功能,我们可以不花一分钱就能做到定时任务,例如定时发送邮件(结合SMTP),还有今天的实例,天气预报定时短信。而且这些服务我们需要花费少量的“云豆”就可以实现!

详情请参阅:http://sae.sina.com.cn/

Sina App Engine基本操作教程

相对于GAE的黑脸CMD命令行操作,SAE的图形界面更加亲切。注册一个SAE账号之后,我们就可以下载Sina App Engine SDK 包括了windows版本和Mac/Linux版本。

具体是SDK操作教程请看在线视频:http://xhprof.tools.sinaapp.com/demo_beta/

天气预报抓取程序,采用SAE的FetchURL类

新浪微博应用开发之一:授权机制介绍

题记:国庆期间没有出去玩,也没有回家,只有蜗居在家,闲来无事,研究了下新浪微博人人网的开发平台。特把研究成果及其经验写成博客,分享给大家。首先先说说我开发的新浪微博应用:微博祝福,以及人人网应用:人人祝福墙。这两个应用都是根据爱墙程序修改而成,并且采用了我的jquery插件wBox

今天主要讲一讲新浪微博应用开发的授权机制问题,因为新浪最近跟CSND合作举办一个APP开发大赛,所以今天想说下新浪微博的应用开发。新浪微博是采用两种授权方法:一种是HTTP普通验证(Basic Authentication)方式,另外一种是OAuth,前面一种是最直接的方法,用户输入账号密码登陆,而第三方网站需要记录用户的账号密码下次才能认证成功,不然每次都要输密码很麻烦,并且对于用户来说很不安全。第二种OAuth是比较安全的,用户需要跳到新浪官方输入账号密码,然后通过三步来换取Access Token,说起来比较麻烦,不过得到了这个Token之后就可以请求到新浪微博的API了,用户还可以随时通过新浪微博取消这个认证授权。

HTTP普通验证

最简单的认证方式,断桥残雪之前写的Follow5 API类就是使用这样的方法,其原理就是使用curl一个URL来请求API接口,已获得开放的数据。
关于HTTP普通验证的方法,大家可以参考我之前写的一个Follow5 API PHP类,关于curl的详细操作,大家可以看这篇文章《cURL常用的几个PHP函数

OAuth认证方法

jQuery教程之鼠标事件篇

jQuery除了选择器之外,还封装了很多事件的处理,比如鼠标事件,所谓的鼠标事件是指用户在移动鼠标光标或者点击任意鼠标键而触发的事件,jQuery中封装了几乎所有的鼠标事件,包括点击,双击,移出,移入等鼠标事件,下面断桥残雪简单的介绍下jQuery的鼠标事件

jQuery的click事件

经典鼠标click的实例:


$("sel").click(function(){
    alert('哈哈 !');
});

jQuery的dbclick事件

一般dbclick事件的同时也会触发两次click事件。。以前我写过一篇博客简单的介绍了下jQuery的鼠标双击事件


$('p').dbclick(function(){
alert('鼠标双击!');
});
$('p').click(function(){
alert('点击了一下!');
});//大家看看结果是怎么样的?

IE中flash遮挡div现象的解决方案

今天开始给网站首页的广告管理系统添加flash广告代码,结果出现IE中(包括IE6+)弹窗广告要flash遮挡的问题,后来想到了常用的iframe方法(参见《解决IE6 select z-index无效,遮挡div的bug》),最终成功了flash遮挡DIV的bug,但是在IE中还出现了浮动的DIV变化位置后,flash出现div碎片的拖尾现象。继续寻找解决方案。最后终于找了原来flash有个参数wmode可以设置,于是代码变成了这样:

<embed src=”s.swf” quality=”high” wmode=”Opaque” width=”150” height=”240”></embed>
于是IE中Flash遮挡DIV的问题成功解决了,看图:

flash遮挡div问题的解决方案

断桥残雪部落格最新的订阅地址

提高Firefox的innerHTML()的性能

Firefox 下innerHTML在操作量大了以后性能下降很厉害,有人写了个提高innhtml性能的代替方法:

function replaceHtml(el, html) {
var oldEl = typeof el === "string" ? document.getElementById(el) : el;
/*@cc_on // 原始的 innerHTML 在 IE 中的性能好一点
oldEl.innerHTML = html;
return oldEl;
@*/
var newEl = oldEl.cloneNode(false);
newEl.innerHTML = html;
oldEl.parentNode.replaceChild(newEl, oldEl);
/* 一旦我们从 DOM 上移除老的元素,则返回新的元素引用。*/
return newEl;
};

可以直接用el=replaceHtml(el, newHtml)代替el.innerHTML=newHtml

速度到底有多大提升,还得测试说话。作者提供了一个测试页面:http://stevenlevithan.com/demo/replaceHtml.html

此方法大大提高了 innerHTML 在 Firefox 和 Safari 上的性能。replaceHtml() 在 Firefox 2.0.0.6 里 destroy 与 replace 的速度各快了 473 倍以及 50 倍。而在 Safari 3.0.3 beta 上则是 create 100 倍,replace 50 倍。

使用PHP把excel(xls)文件导入mysql数据库

昨晚一个客户联系我做网站,提出的要求是需要把客户提供的excel文件里面的数据导入到mysql数据库,最常用的方法就是先把xls文件导出为csv格式的文件,然后在解析csv格式的文件导入到mysql数据库。方法比较冗余,而且分好几步进行,很不方便,断桥残雪今天介绍一种方法是直接跳过csv的中间环节,直接把excel文件导入mysql数据库。

首先我们需要下载PHP-ExcelReader这是一个开源的项目,主要是来解析excel的文件,下载地址:http://sourceforge.net/projects/phpexcelreader,下载之后解压,主要用到excel文件夹里面的两个文件reader.php和oleread.php(这个文件默认的是oleread.inc,不清楚为啥,一堆e文,没看,直接改名即可)。

在reader.php文件中找到以下类似代码(第一行既是),改成正确的oleread.php路径即可:require_once 'oleread.php';

然后新建一个php文件引入reader.php,

解决IE6不支持max-height的bug

罪恶的IE6不支持max-height属性,不过我们可以通过jQuery来解决IE6不支持max-height,jQuery的代码如下:

$(".entry").each(function(){
    if($(this)[0].scrollHeight>500)
     $(this).css({"height":"500px"});
});

原理: 在IE6中可以通过设定height来达到max-height的效果. 循环所有要加max-height属性的DOM元素,判断他的scrollHeight大于你要设置的最大高度 如果超过了就通过设置height为最大高度,我这里使用的是[0],获取的是的DOM对象,而不是jQuery对象,详细说明见:《jQuery选择器使用详解

上面的代码还没有加入IE6的判断,完整代码如下:

if($.browser.msie&amp;&amp;($.browser.version === "6.0")){
$(".entry").each(function(){
if($(this)[0].scrollHeight>500)
$(this).css({"height":"500px","overflow":"hidden"});
});}

当然你也可以通过css表达式来实现IE6支持max-height属性

.entry{
//我烧验证woshao_985140e4b71711df9e5e000c295b2b8d
height: expression( this.scrollHeight > 500 ? "500px" : "auto" ); /* sets max-height for IE */
}