浏览模式: 标准 | 列表
原来,在从 PHP 中直接传递字符串给 JavaScript 时,直接用了 addcslashes,如果传递的是带有 utf-8 编码汉字的,就用 "\0..\037\042\134",如果纯 ascii 范围内的字符串,就用 "\0..\037\042\134\177..\377"。但是今天在写加密程序时发现,发现程序有时行,有时不行。后来发现原来是 \v \a 搞的。addcslashes 会把 \007..\015(八进制) 转义成 \a\b\t\n\v\f\r,而其中 \a 这个 IE 和 Firefox 都不认识,\v 这个 Firefox 认识,IE 不认识。所以我写了下面这个函数,用它可以就可以转化成 JavaScript/JScript 所认识的字符串了(其中 $flag 表示是否转义 ascii 码大于 127 的字符)。感谢五帝同学的帮助! /* @author andot & wudi */ function addjsslashes($str, $flag = true) { if ($flag) { $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134\177..\377"); } else { $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134"); } return str_replace(array(chr(7), chr(11)), array('\007', '\013'), $str); }

» 阅读全文

这几天做加密程序,需要用到大整数运算,PHP 中的 BCMath 扩展提供的功能很少,而且要将字符串表示的2进制数或者 16 进制的字符串转化为 BCMath 需要的 10 进制数字符串既麻烦效率又低。而 GMP 扩展在 Windows 上只有 PHP5 才支持,我的服务器上是 Windows 系统的 PHP 4.4.1。所以 GMP 也没发用。开始打算自己写一组这样的函数,后来在实现了加减乘以后,发现效率比 BCMath 还低。俗话说得好,车到山前必有路,果不其然,正当我不知如何是好时,在 Google 上就找到了 big_int 这个 PECL 扩展,用这个扩展作加密程序,比用 BCMath 和 GMP 扩展都简单,因为许多现成的函数都已经提供了。可惜的是这个扩展默认没有被添加到 PHP 中一起发布,在 PHP 手册中也没有介绍,而且也没有编译好的最新版本的 PHP 扩展文件,只能下载源代码。不过自己编译安装倒也不是很麻烦。下面就介绍一下如何在 Windows 上编译安装这个扩展。

» 阅读全文

Google Video 虽然现在还处于 beta 阶段,但上面的 Video 却不少。但是很遗憾的是,对于中国用户来说,还不能直接在 Google Video 网站上看其中的视频,如果打开一个 Google Video 观看视频的页面,将会显示:
Thanks for your interest in Google Video. Currently, the playback feature of Google Video isn't available in your country. We hope to make this feature available more widely in the future, and we really appreciate your patience.
的错误信息。不过没关系。现在你可以通过 CoolPlayer 插件提供的播放功能来看 Google Video 了。 操作也很简单,在下面这个播放窗口的下载栏上双击,然后你会发现下载栏变成了输入框,可以输入网址,你只要把刚才出错的那个页面地址,复制到其中,然后按回车键,就可以观看那个本来不能播放的 Google Video 了,而且你会发现刚才的输入框也变成了这个 Google Video 的下载地址,直接点击就可以下载这个 Google Video 了。如果你还不明白,可以看下面这个视频教程。 当然,可以这样播放的不只有 Google VideoYoutubevSocial 也可以,其他类型的在线媒体(比如mp3、rm、mov、wmv 等等)也可以。 怎么样,方便吧? How to watch Google Video

» 阅读全文

以前只用 PHP + MySQL,从来没在 PHP 中用过 MSSQL,今天转过来的那个站点正好用的是 MSSQL。刚给他调好了 Register Globals 问题,又一个奇怪的问题就来了。他说他这个系统里面发的新闻有的内容能发,有的不能发,有的能改,有的不能改了。还说以前用着没事。后来发现有两个问题,一个是 php.ini 中有两个选项会影响查询的内容长度。这两个选项是 mssql.textlimit 和 mssql.textsize,把他们改的尽量大一点就好了。另外还有个问题就是 MSSQL 的查询语句跟 MySQL 不太一样,在字符串转义时不是用 \,而是把一个单引号写成两个单引号。这些都是从 PHP 手册的用户注释中发现了,看来 PHP 用户手册的注释真是个好东西。

» 阅读全文