在PHP中像JQuery一样操作HTML

2 条评论

平时在PHP操作HTML时间吃力不讨好的事情, 虽然有“The DOMComment class”之类的神迹,但远不如javasript操作html来得快。 所以懒人们高出一个 phpQuery, 像JQuery一样操作HTML.

<?php
include ‘phpQuery-onefile.php’;
$doc = phpQuery::newDocumentHTML($html);

echo $doc["head > title"]->text();
?>

注意: 看了源码,第二个参数可以指定编码。(utf8、gbk….) $html 必须是utf-8编码的,否则中文会出现乱码;

phpQuery: http://code.google.com/p/phpquery/

python版 pyQuery: http://pypi.python.org/pypi/pyquery

2010年06月16日标签: ,,, 分类: PHP

Nginx根据来源rewrite

我抢沙发

通过来源rewrite url,可以使得通过A网站,和通过B网站 过来访问内容的是不同的, 但是url还是那个; 是不是很帅!nginx轻松搞定。

if ($http_referer ~* mifunny.info){
  rewrite ^/7474748\.html$ /html/ld/index.html break;
}

2010年06月16日标签: ,, 分类: Study notes,大佛Linux

Nginx屏蔽未绑定域名访问

1 条评论

当别人把垃圾域名转向至你的服务器时, 如果不采取措施,那么几乎是傻等着被K。(国内机房一般都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。) 在Nginx的配置文件 nginx.cnf 最后加上下面代码:

server {
  listen 80 default;
  return 500;
}

以此类推, 禁止通过IP访问,可以写成:

server {
  listen 80 default;
  server_name _;
  return 500;
}

2010年06月16日标签: , 分类: Study notes,大佛Linux

计算自然周 – YEARWEEK

我抢沙发

自然周嘛,顾名思义,星期一是一周的第一天, 在MySQL中, 可以使用YEARWEEK函数获得:
SELECT SQL_NO_CACHE yearweek( from_unixtime( unix_timestamp(’2010-06-16 19:13:01′)-86400 ) ) AS week;
结果是 201024

PHP中就稍稍有些麻烦了:

 1 <?php
 2
 3 $dateStr = ’2010-06-16 19:13:01;
 4 echo  getYearWeek($dateStr);
 5
 6 //获取自然周
 7 function getYearWeek($dateStr){
 8     $unixtime = strtotime($dateStr);
 9     $ym = strftime(%Y%m‘, $unixtime);
10     $w = strftime(%V‘, $unixtime);
11     
12     $y = substr($ym, 0, 4);
13     $m = substr($ym, 4, 2);
14     if( 6>(int)$m && 50<$w ){
15         $y = (int)$y - 1;
16     }
17     
18     return $y.$w;
19 }

输出 201024 ; 如果需要计算自然周的第一天和最后一天,不妨参考taobao QA团队的文章: php 取得某个自然周的第一天和最后一天的方法

2010年06月16日标签: , 分类: MySQL,PHP

PHP 大数自动转换为科学计数法的无耻问题

我抢沙发

前段时间碰到一个很头疼的问题,就是大于12位的数字在PHP中,会自动转成科学计数法表示。 比如 1234567891234 显示为 1.23456789123E+12 , 最后只能在计算出大数之后,立即用 sprintf(‘%1.0f’, $number) 来格式化。

奇怪的是,在我的Arch Linux上却不会自动转换, 只出现在生产机上, 郁闷ing. 上网搜了下, 有不少和我遇到相同问题的:

[PHP] 大數運算問題 @ BJ の 狗窩 :: 痞客邦 PIXNET ::
PHP大整数输出成科学计数法问题

解决方法: 在PHP配置文件 php.ini 中, 有一行 precision = 14 , 一般*nix上是14,windows上是12; 不过以防万一, 以后编码 但凡遇到12位以上的数字,都用sprintf格式化.

2010年06月16日标签: ,,,, 分类: PHP

已保护:睡不着,想些事foxconn

输入密码以查看评论。

这篇日志已被密码保护。请在这里输入密码:


2010年05月30日标签: 分类: 心情札记,时事快评

3种PHP-CGI

3 条评论

PHP CGI 有3种形式:

  1. 最强悍的FPM, 功能最强大, 只要配置php-fpm.conf即可;

    fpm主页: http://php-fpm.org/
  2. 使用 spawn-fcgi, 启动命令: env – PHP_FCGI_CHILDREN=3 PHP_FCGI_MAX_REQUESTS=1000 spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f php-cgi -P /var/run/spawn-fcgi.pid

    使用时, 把www-data替换成自己的用户名和群组名;

    参数含义如下:
      -f <fcgiapp> 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
      -a <addr> 绑定到地址addr
      -p <port> 绑定到端口port
      -s <path> 绑定到unix socket的路径path
      -C <childs> 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
      -P <path> 指定产生的进程的PID文件路径
      -u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等
        然后我们可以将这行代码加入到/etc/rc.local文件底部,这样系统启动的时候也可以同时启动PHP的FastCGI进程。

  3. 直接启动php-cgi, 使用命令: php-cgi -b 127.0.0.1:9000

    不过这时php-cgi是使用当前用户身份, 执行session等相关操作会出错, 如果web用户(如ubuntu下的www-data)是可以登录的, 则使用命令: su www-data -l -c “php-cgi -b 127.0.0.1:9000″

    如果www-data不能登录(bash位/bin/false), 那么直接修改用户权限,

        sudo chown www-data:www-data which php-cgi
        sudo chmod u+s which php-cgi

BTW: 近段时间看ZF手册,开头有这么一句: 对于只包含有 PHP 代码的文件,结束标志(”?>”)是不允许存在的,PHP自身不需要(”?>”), 这样做, 可以防止它的末尾的被意外地注入相应。 晕倒~~ 我这会儿才知道有这茬

2010年04月25日标签: ,,,, 分类: PHP

5种翻墙代理

4 条评论

最近每每翻墙,总想起张小花《史上第一混乱》中那句:“阶级啊,这就是阶级啊!万恶的封建主他们骄奢淫逸,他们鱼肉百姓,他们骑在人民头上拉屎撒尿——这个有点恶心就不说了。”呃~~ 是广播剧版的, 看文字没那么强效果。

好了,下面列出本人使用过、使用着的5中翻墙代理:

  1. GAppProxy: 主页 http://code.google.com/p/gappproxy/ , 安装使用FAQ里讲得很明白, 不过部分GAE网址被封, 有些不好使了。
  2. Toonel: java的一个小玩意, 但是速度很慢。
  3. Nginx透明代理: 前文说过了 使用 Nginx 搭建正向代理(透明代理)
  4. SSH proxy: 这个不错,可惜godaddy空间不支持; (命令 ssh -D 8001 user@hostname )
  5. APJP: 主页 http://code.google.com/p/apjp/ , 服务端PHP, 客户端JAVA, 有国外空间的朋友可以选择。
2010年04月18日标签: ,,,,,, 分类: Study notes

使用 Nginx 搭建正向代理(透明代理)

5 条评论

几天前邮购了张宴牛大的《实战Nginx》, 发现nginx作代理实在是 easy! 下面是正向代理(透明代理)的配置内容:

….
  user www-data;
  worker_processes 2;
   … …
  server
  {
    listen 8181;
      location / {
      resolver 8.8.8.8; #DNS最好换一个
      proxy_pass http://$http_host$request_uri;
    }
  access_log /var/log/nginx/proxy_access.log
  }
  .. …

2010年04月04日标签: ,, 分类: Study notes,大佛Linux

Ubuntu VPS初始配置

我抢沙发

一周前, 吃过饭撑得慌, 路过ubuntu论坛, 手痒, 买了个VPS. 现今得空, 配置一番。

系统选择ubuntu-9.10-x86_64, 主要是太懒, 不愿意编译, 喜欢捡现成软件用. :D

1. 更新系统
root# apt-get update
root# apt-get upgrade
root# aptitude wget zip
### 好久不用ub, 逛论坛看到 aptitude 能更好解决依赖性, 姑且用着.

继续阅读 >

2010年04月04日标签: ,, 分类: 大佛Linux

存档页