说明:本规范由 EasyChen 借鉴 SINA网络应用开发部《C++开发规范》和互动技术部《PHP4开发规范》,以及phpDocument规范 整理出的开发规范。我觉得非常不错, 适合PHP的开发,给大家参考,养成一个良好的编程风格是非常有必要的。
第1章 命名规范
1.1变量
1.1.1全局变量
全局变量使用$g_开头,如$g_data_list。
1.1.2 一般变量
一般的...
项目中跨平台调用数据,会用到json或xml。需要将json和xml对象转成数组。用下面的函数就可以了。
/**
*
* 把对象转成数组
* @param $object 要转的对象$object
*/
function objectToArray($object){
$result = array();
$object = is_object($object) ? get_object_vars($ob...
项目需求
访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。
解决思路1:
在跳转到登录页面之前要将当前访问页面的url保存到cookie里面,登录验证授权通过后,从cookie中取出这个url值,跳转到该url指定的页面。
具体实现
我现在的程序是基于ThinkPHP框架的,我们会...
之前一直使用第三方的邮件系统发送邮件,比如QQ啊、gmail啊等,但是有时候客户不希望给我们提供发件人邮箱和密码,后来我才发现使用PHP自带的mail函数完全可以实现这一需求了。
配置
工欲善其事,必先利其器。首先我们以windows下面为例进行说明,如何配置一下本地的mail。
下载附件 sendmail.zip
-解压到任意路径,修改sendmail.ini,根据实际需要修改下面的信息。
[sendma...
一个小小的换行,其实在不同的平台有着不同的实现。
为什么要这样,可以说是世界是多样的。本来在unix环境下换行就用/n来代替,但是windows为了体现它的不同,就用/r/n,更有意思的是在mac中用/r。因此unix系列用 /n,windows系列用 /r/n,mac用/r,这样就用你写的程序在不同的平台上运行有着不少的麻烦。
下面是PHP去除换行符的一些常见方法。
第一种写法:
$content=str_...
PHP中的魔术方法(Magic Methods)
PHP 对象的一个优势是可以使用魔术方法,这些方法可以不需要修改外部代码而重写一个类的默认行为,这使得PHP 语法有更少的冗余性和更具有扩展性。这些方法很好识别,他们都是以双下划线(__)开始的。
比如: __construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sle...
出来工作这么久了,项目经验倒是不少,但是当问及底层的东西时候,常常是一言不发了。现在项目设计底层的东西越来越少,可以说是真正用到的也就是那么一点,真正核心的东西都已经被框架封装好了。总感觉自己一直进步很慢,关于底层设计思想,常常也只可意会。随着时间的流逝,我们常常会感慨书到用时方恨少了,接下来一定要恶补设计思想了。
今天先来复习一下类继承。
类继承很重要,作为程序员也基本每天都会和他打交道,但是有些东西你真的都知道吗?下面是从官网上...
1.找到 php.ini
修改extension=php_curl.dll 把前面的分号去掉
2.把
php_curl.dll
libeay32.dll
ssleay32.dll
复制到 windows/system32下
重启php的服务即可。
查看phpredis中文手册
步骤:
1、将win_redis.rar解压到E:,将E:\win_redis设置到环境变量中。
2、将php_redis.dll 拷贝到php的ext文件夹下,修改 php.ini 添加 extension=php_redis.dll。
3、重启apache,并检查 phpinfo 看到 redis 模块加载成功。
4、双击安装目录下redis-server.exe,以启动redis缓存服务。
5...
配置php_intl模块总是加载失败,在这找到了解决方法http://stackoverflow.com/questions/1451468/php-intl-extension。
首先,把php_intl.dll需要的dll拷贝到apache的bin目录里面,即php目录下面的(所有icu*.dll的dll)文件:
icudt36.dll
icuin36.dll
icuio36.dll
icule36.dll...
说到PHP代码调试,对于有经验的PHPer,通过echo、print_r、var_dump函数,或PHP开发工具zend studio、editplus可解决大部分问题,但是对于PHP入门学习的童鞋来说有一定的难度,而且仅仅通过上述这些PHP调试手段,也很难准确发现PHP性能方面的问题,Xdebug是一个非常有用的PHP调试工具。
Xdebug作为PHP调试工具,提供了丰富的调试函数,也可将Xdebug安装配置为zend studio...
通常情况下,我们都是使用工具备份,比如phpmyadmin、navicat。如果需要使用PHP备份,如何实现呢?
下面提供两种方法,仅供研究使用。
1、
<?php
$host="localhost";
$user="root";
$password="";
$dbname="dbname";
mysql_connect($host,$user,$password);
mysql_select_db($dbn...
function arrayToObject($e){
if( gettype($e)!='array' ) return;
foreach($e as $k=>$v){
if( gettype($v)=='array' || getType($v)=='object' )
$e[$k]=(object)arrayToObject($v);
}
r...
<?php
'/\u4e00-\u9fs5/' //中文字符
'/`\x00-\xff/' //双字节字符 文字
'/\n(\s| )*\r/' //空行
'/<(.*?)>.*<\/\1>|<(.*)\/>/' //HTML标记
'/(`\s*)|(\s*$)/' //首尾空格
'/(\d+)\.(\d+)\.(\d+)\.(\d+)/g/'...
.换行符以外的所有字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,}重复n次或更多次
{n,m} 重复n到m次
temp.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-e...
header方法:
header("Content-type:text/html; charset=xxx"); meta方法:
<meta http-equiv="content-type" content="text/html; charset=xxx" /> 其中,上述xxx可以是gb2312、gbk、utf-8(这里注意:MYSQL中是utf8)。
区别:
<meta>是属于html信息的,仅仅是...
//过滤字符串中的脚本
function cleanJs($text){
$text = trim($text);
$text = stripslashes($text);
//完全过滤注释
$text = preg_replace('/<!--?.*-->/','',$text);
//完全过滤动态代码
$text = preg_replace('/<\?|\?>/','',$text...
php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。
下面我们看个程序:
<?php
function test()
{
static $foo = 0;
echo $foo;
$foo++;
}
test();
test();
test();
test();
test();
test();
?> 执行的结果会输出:012345
正常情况下,如果我们不声...
使用PHP的fwrite方法写日志的实例,本实例来源于支付宝接口文档中的核心函数。
/**
* 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
* 注意:服务器需要开通fopen配置
* @param $word 要写入日志里的文本内容 默认值:空值
*/
function logResult($word='') {
$fp = fopen("log.txt","a");
flock($fp, L...