2007 年 7 月

javascript在ie和firefox下的一些差异

javascript在ie和firefox下,运行结果有一些差异。下面把最近碰到的情况做个记录,以后也会不断补充以备忘。

object操作
firefox:可支持
PLAIN TEXT
CODE:

var obj = { 'key' : 'aaa', }

ie:不支持
PLAIN TEXT
CODE:

var obj = { 'key' : 'aaa', }

会报javascript错误,最后的","必须去掉
javascript对select元素的option操作
firefox:可直接设置
PLAIN TEXT
CODE:

option.text = 'foooooooo';

ie:只能设置
PLAIN TEXT
CODE:

option.innerHTML = 'fooooooo';

删除一个select的option
firefox:可以
PLAIN TEXT
CODE:

select.options.remove(selectedIndex);

ie7:可以用
PLAIN TEXT
CODE:

select.options[i] = null;

ie6:需要写
PLAIN TEXT
CODE:

select.options[i].outerHTML = null;

真是万恶的浏览器。

评论 (4)

PriadoBlender可支持php-gtk2

PriadoBlender可以把你的php文件编译成.exe文件,这个东西很好玩。最近跑到它的论坛上看到有PriadoBlender2.0 beta版本放出来,虽然这个版本没有安装文件,没说说明,也没有更新记录,但是我还是把胆子放大了把这它抓了回来。
解压后的文件夹里有一个文件,运行结果出乎意料,见下图:

可支持的project有:

php-gtk1
php-gtk2
winbinder
command line

目前为止,我还就看过这一个compiler能够支持php-gtk2。我之前试过“Embeder”,也去试用过phc,但是从未有过象PriadoBlender这样的。在点击上图的compile以后,我成功的将之前写的一个php5 + php-gtk小程序编译为.exe文件。
经试用,PriadoBlender beta版本目前有一些缺点:

外部包含的.xml文件需要自己复制过来

可能还有一些缺陷,我打开编译完成的exe文件以后,关掉窗口也不能干掉php-win.exe
中文支持很烂,当然,这可能是php-gtk2本身的事情了。

不管怎么说,php-gtk2终于有了一个可用的编译器,这是个好事情。
BTW:PriadoBlender本身也是用php-gtk完成的。

评论 (10)

php的chm手册打不开怎么办

在网上下载的php的chm手册时常会有打不开的情况,也不是每次都发生。下面是找到的解决办法以及原因。
如果提示从网站打开或保存 .chm 文件,则仅在需要此文件且信任提供此文件的网站的情况下进行此操作。
在“文件下载”对话框中,单击“保存”,然后选择要保存此 .chm 文件的位置。然后,使用下面的方法之一:
方法 1
1. 双击此 .chm 文件。
2. 在“打开文件安全警告”对话框,单击以清除“打开此文件前始终询问”复选框。
3. 单击“打开”。
方法 2
1. 右键单击该 CHM 文件,然后单击“属性”。
2. 单击“取消阻止”。
3. 双击此 .chm 文件以打开此文件。
参考微软的说明:http://support.microsoft.com/kb/902225/zh-cn

评论 (7)

[php5]将xml转换成json最简单的办法

在php5下,将xml转换成json最简单的办法,就是利用simplexml和json扩展。
废话不多说,贴代码:
PLAIN TEXT
CODE:

<?php

$xml = <<<EOF

<?xml version="1.0" encoding="UTF-8"?>

<books>

    <book id="1">

        <title>Code Generation in Action</title>

        <author><first>Jack</first><last>Herrington</last></author>

        <publisher>Manning</publisher>

    </book>

 

 

    <book id="2">

        <title>PHP Hacks</title>

        <author><first>Jack</first><last>Herrington</last></author>

        <publisher>O'Reilly</publisher>

    </book>

    <book id="3">

        <title>Podcasting Hacks</title>

        [...]

评论 (2)

ubuntu下安装xdebug的笔记

在ubuntu下安装xdebug的笔记。

下载xdebug 2.0: http://www.xdebug.org/link.php?url=xdebug200
解压: tar xzvf xdebug-2.0.0.tgz
编译安装:
cd xdebug-2.0.0
phpize
./configure --enable-xdebug
make
cp modules/xdebug.so /usr/lib/php5/20051025/

这里的/usr/lib/php5/20051025/是我的php extension_dir目录

修改配置文件php.ini,添加一行zend_extension="/wherever/you/put/it/xdebug.so"
重启apache

顺便贴个 ubuntu下安装php5 + pdo

评论 (2)

用xdebug优化php的三个小窍门

xdebug的2.0正式版已经发布了。这个工具用在php的代码调试,优化方面效果很不错。下面贴上俺使用过程中的几个小窍门。

xdebug生成profile文件,可以用KCachegrind来查看,但是这个工具只在linux下面可用,没有windows下的版本。这里推荐一个win下的免费工具——wincachegrind,也可以查看xdebug的profile文件,用来分析php代码运行情况足够用了(偶尔不太稳定)。
xdebug一般情况下只会对一个请求做profile记录,如果需要查看几个请求的运行情况合集,可以设置xdebug.ini的xdebug.profiler_aggregate = 1记得重启你的apache。
如果在xdebug.ini里设置了xdebug.profiler_enable = 1那么每次程序运行期间xdebug都会记录profile,这样对程序的运行速度有很大的影响。为了避免这一情况发生,可以让xdebug仅在需要的时候运行——设置xdebug.profiler_enable_trigger = 1这样,只有你用get/post方式提交XDEBUG_PROFILE变量的情况下,xdebug才会开始干活。

另:将最新版本的xdebug和APC同时使用,没有出现兼容性问题,运行良好。

评论 (5)

关于“php str_replace 一次”

在日志里头看到这样一个查询词,“php str_replace 一次”。用户可能是在找如何利用php的str_replace只替换目标字符串的内容一次,而不是全部替换。
这是个比较小但是有点意思的问题,正好之前也做过类似的处理,当时我是直接利用preg_replace实现的。
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。
因为preg_replace的第四个参数可以实现替换次数的限制,所以这个问题这样处理很方便。但是在查看php.net上关于str_replace的函数评论后,从中居然也可以挑出几个有代表性的函数来。

评论 (7)