Press "Enter" to skip to content

字符编码详解(基础)

字符编码问题, 对于一个在伟大天朝的程序员来说, 几乎不可能遇不到, 从我刚开始接触Coding到现在, 乱码, 编码转换问题就好像一直没有停息过.
从最初的数据库到客户端乱码,到后来不同浏览器Url编码习惯不同,再到服务器和脚本编码不同的问题等等.
朋友一直希望我能写一篇关于编码的文章, 但无奈面太广, 设计到的问题多, 所以也一直写不出来.
不过, 作为基础, 大家先看看这篇文章吧:《字符编码详解》...

Filed in 转载, 随笔
with 19 Comments

保证PHP扩展的依赖关系

cyj网友提到, 如果俩个PHP扩展模块之间有互相依赖关系, 那么该如何保证正确的加载顺序呢?
也就是说, 如何保证模块的依赖关系?
关于这个问题, 可以从如下俩点入手展开:
1. 扩展的加载顺序是和它出现在配置文件中的先后顺序相关的, 也就是说, 如果在配置文件中的顺序如下,

extension=mysql.so
extension=pdo.so
    

那么, mysql扩展就会比pdo扩展先载入.
2. 那么如果顺序出错, 我们又要怎么保证正确的加载, 或者告诉Zend此时出错了呢?......

Filed in PHP源码分析
with 22 Comments

正确使用JS中的正则

yuchen网友发来一个问题, 大体意思就是在JS中, 同样的正则, 同样的字符串, 循环匹配结果却不一样 ,

<script type='text/javascript'>
var reTest = /^aid=(.*)/ig;
var aData = [ 'aid=^$', 'aid=^$', 'aid=^$', 'aid=^$' ];
for (var i=0, l=aData.length; i<l; i++) {
	alert(reTest.test(aData[i]));
}
</script>

结果却是:

true
false
true
false

为什么会这样呢?

Filed in Js/CSS
with 16 Comments

Linux上配置Nginx+PHP5(FastCGI)

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。
因此我打算用其替代Apache应用于Linux服务器上。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。那么我们必须使用FastCGI方式来执行PHP程序。
下面是我成功地配置Nginx + PHP5 FastCGI的过程

Filed in Linux/Unix, 转载
with 27 Comments

深入理解PHP原理之错误抑制与内嵌HTML

PHP支持内嵌HTML的, 那么对于PHP文件中, PHP标签外的HTML会怎么处理呢? 它和直接输出HTML有什么区别么?
PHP提供了一个错误抑制符'@', 它是通过什么方式来阻止错误输出呢? 我又该在什么时候使用它呢?
这是这俩天一些网友提到的共同问题, 今天就索性整体回答下, 备后来人翻阅.

Filed in PHP应用
with 24 Comments

PHP中的Hash算法

Hash Table是PHP的核心,这话一点都不过分.
PHP的数组,关联数组,对象属性,函数表,符号表,等等都是用HashTable来做为容器的.
PHP的HashTable采用的拉链法来解决冲突, 这个自不用多说, 我今天主要关注的就是PHP的Hash算法, 和这个算法本身透露出来的一些思想.

Filed in PHP源码分析, 随笔
with 33 Comments

使用gettext来支持PHP的多语言

开发多语言的Web应用是一件非常困难的事,各个国家的字符集的编码方式、货币符号、日期格式、数字格式、文字表现都各不相同.
我们今天用一个简单的实例说明一下在PHP中的getText的用法(getText是一系列的工具和库函数,帮助程序员和翻译人员开发多语言软件的), 从而实现PHP的i18n.

Filed in PHP应用
with 12 Comments

PHP Session的一个警告

警告全文如下:

	PHP Warning:  Unknown: Your script possibly relies on a session side-effect
which existed until PHP 4.2.3. Please be advised that the session extension does
not consider global variables as a source of data, unless register_globals is enabled.
You can disable this functionality and this warning by setting session.bug_compat_42
or session.bug_compat_warn to off, respectively. in Unknown on

网上对这个问题的解决有很多办法, 但是都是不知所以然的解决之道. 本文从seesion出发, 分析了这个问题的成因, 继而让大家知道所以然...

Filed in PHP应用, PHP源码分析
with 14 Comments

思考能力何其重要..

做为一个工程师, 我想没有什么会比思考能力,分析能力更重要的了吧?
诚然, 一个工程师,代码写的很漂亮, 语言功底很深厚, 项目经验很丰富, 都很重要, 但做为一个本质上的人, 做为一个在大多数人眼里认为是"聪明的人"的工程师们, 是否有刻意去培养自己的思考能力呢?

Filed in 随笔
with 11 Comments