PHP中获取中英文混合字符串长度

蓝飞 蓝飞 | 时间:2012-12-04, Tue | 23,289 views
后台技术 

今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数。

$str = 'Hello world!';
echo strlen($str);	// 输出12

然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的。在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,中文字符占3个字节。

$str = '你好,世界!';
echo strlen($str);	// GBK或GB2312下输出12,UTF-8下输出18

(阅读全文…)

[转载]深入浅出PHP下的文件上传

蓝飞 蓝飞 | 时间:2012-11-28, Wed | 16,399 views
后台技术 

文件作为一种特殊的表单数据,通过http post请求方式提交至服务器的时候,php会生成一个$_FILES全局数组,相关的文件信息会存放在这个全局数组中。我将在这篇文章中通过一些示例代码来阐述php下的文件上传,并且深入看下关于文件上传内部的实现机制,最后简单说下如何加强这方面的安全性!

文件上传

为了让客户端的用户能够上传文件,我们必须在用户界面中提供一个表单用于提交上传文件的请求。由于上传的文件是一种特殊数据,不同于其它的post数据,所以我们必须给表单设置一个特殊的编码:

<form action="upload.php" method="POST" enctype="multipart/form-data">

以上的enctype属性,你可能不太熟悉,因为这常常会被忽略掉。但是,如果http post请求中既有常规数据,又包含文件类数据的话,这个属性就应该显示加上,这样可以提高针对各种浏览器的兼容性
接下来,我们得向表单中添加一个用于上传文件的字段:

<input type="file" name="attachment" />

上述文件字段在各种浏览器中可能表现会有所不同。对于大多数的浏览器,上述字段都会被渲染成一个文本框加上一个浏览按钮。这样,用户既可以自行输入文件的路径到文本框中,也可以通过浏览按钮从本地硬盘上选择所要上传的文件。但是,在苹果的Safari中,貌似只能使用浏览这种方式。当然,你也可以自定义这个上传框的样式,使它看起来比默认的样式优雅些。

(阅读全文…)

BAE中实现WordPress固定链接及伪静态

蓝飞 蓝飞 | 时间:2012-11-19, Mon | 52,175 views
后台技术 

写在前面

有一好友在BAE上搭建了自己的WordPress博客,但由于BAE推出的时间较晚,不像SAE那样已经具备较为完善的应用仓库,对WordPress博客程序也没有官方的支持,而固定链接对于一个博客来说是比较重要的,伪静态有利于搜索引擎优化,而链接的格式若不尽早确定,日后再想改变将是一件非常麻烦的事情。

什么是BAE

百度应用引擎(Baidu App Engine,简称BAE)是基于百度基础架构推出的网络应用开发平台,基于BAE架构,使开发者不需要维护任何服务器,只需要简单的上传应用程序,就可以为用户提供服务。BAE有能力将原本单机的LAMP架构,变成分布式架构。

开发者可以基于BAE平台进行PHPJavaPython应用的开发、编译、发布、调试。同时BAE平台也提供了大量的云服务给开发者,包括fetch URL、task queue、SQL、memcache,后续会提供更多服务。在性能方面,如果开发者希望增加服务能力,可以通过申请更多执行单元的方式进行灵活的调整。

BAE服务可以让开发者在开发网络应用程序的过程中摆脱繁琐的环境、服务问题,把精力专注于业务逻辑。

简单的上传应用程序,就可以为用户提供服务。BAE有能力将原本单机的LAMP架构,变成分布式架构。
开发者可以基于BAE平台进行PHP、Java、Pyt应用的开发、编译、发布、调试。同时BAE平台也提供了大量的云服务给开发者,包括fetch URL、task queue、SQL、memcache,后续会提供更多服务。在性能方面,如果开发者希望增加服务能力,可以通过申请更多执行单元的方式进行灵活的调整。

(阅读全文…)

[转载]PHP函数的实现原理及性能分析

蓝飞 蓝飞 | 时间:2012-11-15, Thu | 12,836 views
后台技术 

前言

在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点?函数调用是怎么实现的?php函数的性能如何,有什么使用建议?

本文将从原理出发进行分析结合实际的性能测试尝试对这些问题进行回答,在了解实现的同时更好的编写php程序。同时也会对一些常见的php函数进行介绍。

(阅读全文…)

10个步骤让你成为高效的Web开发者

蓝飞 蓝飞 | 时间:2012-10-26, Fri | 12,076 views
心路历程, 前端开发, 后台技术 

要成为高产、高效的 Web 开发者,这需要我们做很多工作,来提高我们的工作方式,以及改善我们的劳动成果。

下面是 10 个提高效率的步骤,虽然不能保证解决你在开发中的所有问题,但至少是非常实用的,可以简化你的 Web 开发流程,使开发的每一个环节快速、流畅。还可以帮助你节省大量的时间,以便开发更多、更好的项目。

1. 使用 Web 开发框架

一个良好的 Web 开发框架,可以帮助你:

  • 解决常见的 Web 开发问题,如标准的 Web 页面布局、Web 表单处理、浏览器兼容性解决等)。
  • 测试 Web 开发的 bug、安全和性能
  • 使代码重用更容易,因为有一个统一的 API。
  • 社区开发的插件和工具,可以进一步增强开发(jQuery 有很多非常棒的插件,比如用户界面、图像和网页排版等)。
  • 遵循编码的最佳实践和伟大的编程设计模式,你甚至不用去思考
  • 有开发社区和用户的支持,你可以获取帮助以及进行协作。
  • 初学者使用起来非常容易。

所有这些好处都可以节省你的时间以及提高项目的质量。

(阅读全文…)