随笔分类 - PHP
用PHP解析类JSON字符串为数组的实现
摘要:题目:把字符串嵌套关系转换成数组,字符串只包含成对中括号、数字和逗号字符串:(1,(1,2,(1,(1,2,(1)),3)),3,(1,(1,2,((1((1,(1,2,(1,2,3),4,5),3),2)),2)),((1,2,3),2,3),4,5),5) 程序: 输出结果:[1,[1,2,[1
阅读全文
关于PHP函数time() date() 和 strtotime() 的时区问题
摘要:最近项目中有个需求, 要记录新注册用户的次日登录情况,于是写出了如下代码:$create_time = '用户注册时间'; //格式 Y-m-d H:i:s$time = time(); $lasttime = date('Y-m-d H:i:s', $time); ...
阅读全文
通过php下载文件并重命名
摘要:$filename = dirname(__FILE__) . '/oldfilename.jpg';$out_filename = 'newfilename.jpg';if( ! file_exists($filename)){ echo 'Not Found' . $filename; ex...
阅读全文
php HTTP Auth
摘要:if (!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] != 'kuser' || $_SERVER['PHP_AUTH_PW'] != 'kPass' ) { header('WWW-Authenticate: B...
阅读全文
使用curl传递cookie错误的问题
摘要:工作中发现一个问题, 通过curl调用接口传递cookie操作用户的数据, 接口的程序解析不了cookie中的数据.经过排查发现curl发送的cookie数据为TZ+Gn+rEk+6G4d而接口取到的cookie数据为TZ Gn rEk 6G4d原来接口取出的是decode后的数据, 等同于urldecode('TZ+Gn+rEk+6G4d'), 结果就是这样TZ Gn rEk 6G4d"+" 号会被urldecode成空格, 数据错误, 当然解析错误.解决方法:curl中传递的cookie值需要是urlencode后的,urlencode('TZ+
阅读全文
CGI,FastCGI,PHP-CGI与PHP-FPM
摘要:CGICGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。FastCGIFastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算,即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。F
阅读全文
PHP 过滤页面中的 BOM
摘要:function checkBOM ($filename) { $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191...
阅读全文
PHP 获取 post 中的 json 数据
摘要:ext 与 PHP 交互时,ext 把 json 数据 post 给 PHP,但在 PHP里面 $_post 获取不到,$_REQUEST 也获取不到,但是通过 firedebug 看到的请求信息确实是把 JSON 数据 post 给了 PHP。想到以前通过flash将图片二进制流传给PHP,然后使用 $GLOBALS['HTTP_RAW_POST_DATA'] 后正常获取到数据。PHP 默认只识别 application/x-www.form-urlencoded 标准的数据类型,因此,对型如 text/xml 或者 soap 或者 application/octet-str
阅读全文
PHP 使用 curl 提交 json 格式数据
摘要:$data = array("name" => "Hagrid", "age" => "36");$data_string = json_encode($data);$ch = curl_init('http://api.local/rest/users');curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);curl_set
阅读全文
flush() 不能按顺序输出时解决方法
摘要:如果是在linux下, 首先确认是否添加 ob_start() 和 ob_flush().ob_start();for ($i=1; $i<=10; $i++) { echo $i."<br />\n"; ob_flush(); flush(); usleep(500000);}如果还是不能输出的话, 就在代码前面加上头信息header("Content-Type:text/html;charset=utf8;");ob_start();for ($i=1; $i<=10; $i++) { echo $i."<br
阅读全文
PHP 中 flush() 与 ob_flush() 的区别
摘要:buffer ---- flush() buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入 一个字符,操作系统并不会立即把这个字符直接写入到磁盘,而是先写入到buffer,当写满了一个buffer的时候,才会把buffer中的数据写入磁 盘,当然当调用内核函数flush()的时候,强制要求把buffer中的脏数据写回磁盘。 同样的道理,当执行echo,prin..
阅读全文
PHP 使用共享内存的资料
摘要:使用 PHP 直接在共享内存中存储数据集:http://www.ibm.com/developerworks/cn/opensource/os-php-shared-memory/使用共享内存实现php Spinlock:http://bbs.phpchina.com/thread-218881-1-1.html基于PHP共享内存实现的消息队列可以参考,代码来源于网络:<?php/*** 使用共享内存的PHP循环内存队列实现* 支持多进程, 支持各种数据类型的存储* 注: 完成入队或出队操作,尽快使用unset(), 以释放临界区** @author wangbinandi@gmail.
阅读全文
PHP 的 UNICODE 编码和解码
摘要:方法一:<?phpfunction unicode_encode($name){ $name = iconv('UTF-8', 'UCS-2', $name); $len = strlen($name); $str = ''; for ($i = 0; $i < $len - 1; $i = $i + 2) { $c = $name[$i]; $c2 = $name[$i + 1]; if (ord($c) > 0) { //两个字节的文字 $str .= '\u'.base_con...
阅读全文
一道有趣的++运算题目
摘要:$a = 3;$b = 5;if($a = 5 || $b = 7){ $a++; $b++;}echo $a.' '$b;输出结果是 "1 6" .详解:按照运算优先级 括号里 $a = (5 || $b =7)当进行 || 运算时, 前面为真则后面不执行所以此时 $a = ture;而大括号中 $a++ 运算后, $a 依旧等于ture (布尔值进行++运算后保持原类型不变)所以进行 echo 时, $a "." 链接空格时转换成字符串类型 所以输出为 "1 6"
阅读全文
Dos下运行php.exe,出现没有找到 php_mbstring.dll 的错误解决方法
摘要:在php.ini文件中将 extension=php_mbstring.dll 移动到 extension=php_exif.dll 之前.因为 exif 要调用 mbstring, 所以 mbstring 必须在前面.php_exif.dll, EXIF 函数库,需要 php_mbstring.dll.并且在 php.ini 中, php_exif.dll 必须在 php_mbstring.dll 之后加载.如若不行,则检查php.ini 中默认的 extension_dir 值是否为extension_dir = "./", 把此项改成extension_dir = &
阅读全文
PHP 中 empty is_null 和 isset 的测试
摘要:代码如下:<?php$a;$b = false;$c = '';$d = 0;$e = null;$f = array();首先是empty的var_dump输出:boolean trueboolean trueboolean trueboolean trueboolean trueboolean true然后是is_null的输出:boolean trueboolean falseboolean falseboolean falseboolean trueboolean false最后是isset的输出:boolean falseboolean trueboolean
阅读全文
一些UTF-8编码问题
摘要:一..HTML页面转UTF-8编码问题二.PHP页面转UTF-8编码问题三.MYSQL数据库使用UTF-8编码的问题四.JS相关的UTF-8编码问题五.FLASH相关的UTF-8编码问题一.HTML页面转UTF-8编码问题1.在<head>后,<title>前加入一行:<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />顺序不能错,一定要在<title>标签前加入,否则如果<title>与</title>之
阅读全文
提高PHP代码质量
摘要:文章来源:http://developer.51cto.com/art/201204/327561.htm1.不要使用相对路径常常会看到:require_once('http://www.cnblogs.com/lib/some_class.php');该方法有很多缺点:它首先查找指定的php包含路径, 然后查找当前目录.因此会检查过多路径.如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录.另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了.因此最佳选择是使用绝对路径:define('ROOT','/var/www
阅读全文
JSON 在 IE 下不执行的问题
摘要:json在本地IE FF CHROME均正常执行,放到服务器上 IE 却不执行,查询资料后发现是 apache 默认编码问题.解决方法:强制声明 XMLHTTPRequest 的编码PHP:header('Content-Type:text/html;charset=UTF-8');ASP:Response.Charset = "UTF-8'"JSP:response.setHeader("Charset","UTF-8'");静态文件,可以从服务器设置Apache:AddDefaultCharset
阅读全文
PHP.ini 配置文件 [中文]
摘要:;;;;;;;;;;;; 警告 ;;;;;;;;;;;;; 此配置文件是对于新安装的PHP的默认设置.; 默认情况下,PHP使用此配置文件安装; 此配置针对开发目的,并且*不是*针对生产环境; 基于一些安全方面的考虑,在你的网站上线之前,请考虑使用php.ini-recommended; 以及在线文档 http://php.net/manual/en/security.php.;;;;;;;;;;;;;;;;;;;; 关于 php.ini ;;;;;;;;;;;;;;;;;;;;; 此文件控制了PHP行为的很多方面. 为了让PHP能够读取它; 必须命名为 'php.ini'.
阅读全文