Submitted by gouki on 2009, October 15, 6:39 AM
想分析网页?不会写正则?这。。。一切都不是问题
在以前是不可想象的。但如今google的项目里有这个phpQuery,它可以让一切变得可能。。。
phpQuery is a server-side, chainable, CSS3 selector driven Document Object Model (DOM) API based on jQuery JavaScript Library.
Library is written in PHP5 and provides additional Command Line Interface (CLI).
如果你使用过jQuery,你会发现这一切是如此的相象。
PHP代码
- <?php
-
- include_once( './phpQuery.php' );
-
- $html = new phpQueryDocumentFile('xxx.html');
- $title = $html->find('title')->text();
-
- echo $title;
以上内容是取得网页的 title。多方便啊。。。
如果是取得某个class的内容呢?
PHP代码
- <?php
-
-
-
-
- $html->find('div.test eq(1)')->html();
-
呵呵,快去:http://code.google.com/p/phpquery/下载吧
Tags: phpquery
PHP | 评论:1
| 阅读:25196
Submitted by gouki on 2009, October 10, 4:09 PM
定界符这个东西功能很强大,特别是在引用多行HTML代码的时候,方便了PHP的开发者,但其实他的使用很妖异【没装过PHP5.3,所以不知道新的有没有变化】
1、heredoc syntax 里面只能是文字,凡是涉及到的变量都会被解析,不想被解析?美元前加反斜杠吧。。解析类中的变量?使用大括号吧。。。
2、不要妄想在定界符内赋值、计算等,如果是变量的相乘,请在外面解析完了放进来。。。
3、大括号要注意着使用,无论如何,大括号内不要同时出现多个变量【多个变量只应该是{$a->$b->$c}这种】
4、定界符标志后面不能有任何空格,如 <<<EOT,EOT;,这两个符号后都不能有任何字符,EOT;就是占一行,谁也不能抢它
PHP代码
- <?php
- print <<<EOT //如果这个后面有空格,报错。。。
- haha
- EOT; //如果这个后面有空格,报错【如果没有空格,就这样文件直接结束,同样报错,请在EOT;后面敲个回车吧】
就想到这么多。以后想到再写
顺便说明一下,PHP的文件还是有规范的。。
例如
1、空文件,一般代码为<?php,如果就这样写,肯定报错,最少在<?php后面得加一个空格
2、文件结尾,上面说的定界符,就是一例,如果文件正好是EOT;结尾,后面又没有 ?> ,文件绝对报错,所以必须要在EOT;后再敲一个回车。。。。
妖啊。。实在是妖啊。。
Tags: 定界符, heredoc
PHP | 评论:1
| 阅读:20839
Submitted by gouki on 2009, September 28, 6:41 PM
本文来自博客园,有点意思。。。
原文地址:http://www.cnblogs.com/kenandalda/archive/2009/09/20/1570617.html
作者认为:
XML/HTML代码
- 用数组的sort方法对字符串进行排序,让相同字母都到一起去
- 用正则表达式来匹配两个相邻的不同字符,中间加上逗号
- 以逗号为界把第二步得到的字符串打散成数组
- 按字符串长度排序该数组,得到的第一个元素就是要的答案
于是写了以下代码:
JavaScript代码
- String.Count=function(str){
- var ret=str.split("")
- .sort()
- .join("")
- .replace(/((.)\2*)/g,"$1,")
- .split(",")
- .sort(function(a,b){return b.length-a.length});
- return [ret[0][0],ret[0].length];
- }
-
- var s="&(&$#(JFLSDJFOIWEfdjsklfewosd2378907345asdsdwsdqs";
- alert(String.Count(s));
作者是谁?他是:Kenneth Chen,据称代码已经修改过了。。
PHP | 评论:0
| 阅读:18170
Submitted by gouki on 2009, September 27, 9:44 AM
PHP5.3现在或许有N多人在研究在测试了。虽然那个namespace长的丑了一点。但不影响其他功能对我的影响。
haohappy在这里作了介绍,有部分资料以前介绍过,我这里就不多介绍,我所转的只是我认为的一些新特性
CLASS相关
1、静态类可以动态调用,即类似于 $aa::$bb($cc) 这样的调用方式,以前只能使用call_user_func(array($aa,$bb),$cc)这样的方式来调用
2、静态类增加了 __callStatic,类似于__call,但这是专为静态类使用的。
3、类中增加了__invoke方法(haohappy没有介绍,我也没有翻手册)
Nowdoc,
说这个nowdoc,恐怕很多人不明白,还有heredoc,还是很多人不明白这是什么,如果说到“定界符”,也许会有人记得。这是在国内被翻译的名词吧?
PHP代码
- <?php
- print <<<EOT
- xxxx
- EOT;
关于定界符的功能,我不想多说,可以翻手册,nowdoc,的功能和用法是什么呢?以上面的代码为例,是在第一个EOT处,为EOT加上单引号,即 <<<'EOT',在这样的操作下,整个定界符中的变量将不会被解析,比较适合用来处理大段的 PHP 代码
常量定义方式增加
原来的常量定义是:define("XXX",XXX);如今 又增加了一个新的方法: const XXX = "XXX";
三元运算符增加了一个快捷书写方式: ?:【感觉和以前的那种 for 循环的简写有点类似,忽略部分参数。。。】
原本格式为是(expr1) ? (expr2) : (expr3)
如果expr1结果为True,则返回expr2的结果。
PHP5.3新增一种书写方式,可以省略中间部分,书写为expr1 ?: expr3
如果expr1结果为True,则返回expr1的结果
HTTP状态码在200-399范围内均被认为访问成功
支持嵌套处理异常(Exception)
新的垃圾收集器(GC),并默认启用
Tags: haohappy
PHP | 评论:0
| 阅读:18925
Submitted by gouki on 2009, September 25, 10:59 AM
本文首发在www.ucapi.com,康盛系列中同步登录的注意事项,呵呵。在这里 也留一份啦
康盛目前的产品基本上都使用了ucenter,甚至一些已经卖掉的产品中也有使用ucenter的,比如Ecmall等。
其实很多时候你会发现,你明明在A系统中登录了。但是却没有登录到B系统。这其中有一部分是网页在跳转的时候,代码没有来得及执行完毕导致,但也有一部分是因为这几个系统中的接口有点小小的问题。
现在,我们来还原一下问题产生的情景。
1、到论坛注册一个用户,登录。理论上,这时候康盛所有的产品应该都能够登录了,因此这个注册用户已经在ucenter的用户表中了。
2、打开supesite,你会发现,他会提示您需要登录。再打开uchome,也是如此的提示。一个冷冰冰的登录窗口依然显示在那里。
3、打开ecmall,你会发现,咦,怎么登录了?真奇怪啊。为什么有两个系统没有登录,一个系统登录了?
4、现在,我们重新一一登录supesite和uchome。然后退出系统。再在论坛登录,你会发现,咦。怎么都登录了?原来显示登录窗口的supesite和uchome都已经登录了,这是什么呢?
5、现在我们打开这两个系统的接口仔细分析一下,同时再打开这两个程序的登录程序。突然间,你就恍然大悟。原来这两个系统在登录的时候,都会有一个 判断,如果该系统自身的用户表里没有这条记录,那么他们都会先判断用户是否存在,如果确实存在,则往自身的用户表里插入一条记录。然后再进行登录。
6、然而这两个系统的接口文件uc.php中的同步登录函数中,却没有这一条。而只是仅仅的判断是否存在session库中,来判断是否登录。 supesite中还会注册一个activetyuser这样一个cookie,以期你在打开supesite的时候,如果有这个cookie就自动插入 一条记录【然而,这只是虚晃一枪,根本就没有执行过】
7、再回首,我们看一下ecmall,人家写的就简单了。同样的原理,生成一个cookie,在打开页面时,如果有cookie存在,就生成用户【它是确确实实执行了】。
现在明白问题所在了吧?知道这些问题,你其实可以自己在这个同步登录的函数里加上相应的代码就行了【这里就不写了,看官们,自己练练手吧】
最后再说一点小问题,这个其实说的是uchome,uchome除了用户名密码登录外,还有一个自定义问题。所以即使你同步登录了,但如果设置了自定义问题,进入uchome的时候,还是需要再回答一下这个自定义问题。
Over,全部解释完毕。
Tags: 同步登录, ucapi, 康盛
PHP | 评论:1
| 阅读:21286