<?php
class Chain {
public function edge($val){
echo ‘create ‘.__METHOD__.’: ‘.$val.’ edge’;
}
}
call_user_func_array(array(new Chain,”edge”),array(“two”));
?>
之前给朋友公司架设了nginx phpcgi 应用环境
今天告诉我无法获取get post cookie等
查了php.ini 没用问题
找了半天,原来nginx.conf
include fastcgi_params;
被注释了 开启。即可。
网页正文提取的算法很多也很复杂 当然准确度更有不同
技术难点无非就是在正文除噪
我的实现方法是《基于相似度及密度匹配》
1 网页分块
2 标题相似度匹配
3 求网页平均长度及密度
下图是sina的一篇新闻最终页密度值及相似度波形图:
先放出demo
http://www.woyuw.com/exthtml/
准确度还有待提高
Categories: php, 算法 Tags:
在常规的开发过程中,如b/s开发 一般的firebug 或其他工具来做网络的请求分析。但是具体的一些内容还是无法全面的获取。如tcp,端口等。
如果在开发基于curl的模拟登录应用,如sns社区常用模块中的获取163 邮箱的好友列表.这将是一款不错的分析工具.
下面是ethereal 分析的截图
QQ的协议地址

Categories: php, 其他 Tags:
今天帮一位老乡正则提取抓来的药品数据,以获取药品的属性。因为关键字比较混乱大体包过:’成分’,'适应症’,'注意事项’,'规格’,'药理用途’,'用法用量’等
下面是实现的简单代码,没有做效率优化
- <?php
- /*
- @Author 陈毓端
- @E-mail itw1@163.com
- @Homepage http://blog.woyuw.com
- */
- try {
-
- $dbh = new PDO("sqlite:./data.db3");
- $mysqldbh = new PDO("mysql:host=localhost;dbname=xxx",'root','xxx');
- $mysqldbh->exec("SET NAMES 'utf8';");
- }
- catch(PDOException $e)
- {
- echo $e->getMessage();
- }
- function regular ($str,$array){
- $tmp='/';
- foreach($array as $key){
- $tmp.=$key.'(.*)';
- }
- $tmp=$tmp."$/iUs";
- preg_match_all($tmp,$str,$out);
- $newArray=array();
- $i=0;
- foreach($out as $key){
- if($i<count($out)-1)
- $newArray[$array[$i]]=$out[$i+1];
- $i++;
- }
-
- return $newArray;
- }
- $sql = "SELECT * FROM Content limit 30";
- $values=array();
- foreach ($dbh->query($sql) as $row)
- {
- $array=array('成分','适应症','注意事项','规格');
- $value=regular ( $row['otccontent'],$array);
-
- if(!empty($value['成分'])){
- array_push($values,$value);
- continue;
- }
- $array=array('成分','药理用途','用法用量');
- $value=regular ( $row['otccontent'],$array);
-
- if(!empty($value['成分'])){
- array_push($values,$value);
- continue;
- }
- $array=array('成分','适应症','不良反应');
- $value=regular ( $row['otccontent'],$array);
-
- if(!empty($value['成分'])){
- array_push($values,$value);
- continue;
- }
- $array=array('别名','外文名','药理作用','适应症','注意事项');
- $value=regular ( $row['otccontent'],$array);
- if(!empty($value['别名'])){
- array_push($values,$value);
- continue;
- }
- $array=array('别名','药理作用','功能与主治','用法与用量','规格');
- $value=regular ( $row['otccontent'],$array);
- if(!empty($value['别名'])){
- array_push($values,$value);
- continue;
- }
- $array=array('别名','外文名','适应症','注意事项');
- $value=regular ( $row['otccontent'],$array);
- if(!empty($value['别名'])){
- array_push($values,$value);
- continue;
- }
- //if(!empty($value['别名'])){
- $array=array('别名','适应症','用量用法','不良反应');
- $value=regular ( $row['otccontent'],$array);
- if(!empty($value['别名'])){
- array_push($values,$value);
- continue;
- }
-
- $array=array('别名','适应症','用量用法','注意事项','规格');
- $value=regular ( $row['otccontent'],$array);
- if(!empty($value['别名'])){
- array_push($values,$value);
- continue;
- }
- $array=array('别名','适应症');
- $value=regular ( $row['otccontent'],$array);
- if(!empty($value['别名'])){
- array_push($values,$value);
- continue;
- }
-
-
- }
- print_r($values);
- ?>
昨天 晚上 一个朋友告诉我说一个 游戏充值接口的用户验证采用ajax方法,问题是对方接口需要post方式,而且是跳转的,因为ajax机制的约束不允许php内部又跳转.这样不能获得返回值.我建议他直接在ajax端采用post,他嫌麻烦. 那成,今天早上就用curl 写了个 不跳转的模拟post.
简单代码如下:
- <script>
- $.ajax({url:'http://xxx.xxx.com/sendpost.php',
- type: 'GET',
- dataType: 'json',
- timeout: 3000,
- cache:false,
- error: function(){
- alert("系统错误...");
-
- },
- success: function(data){
- $("#value").html(data.log);
-
- }
- });
- </script>
sendpost.php
- <?php
- $url = 'http://xxx.xxx.com/work.php'; //psot的目标页面
- $postDate ='user='."cyd&age=25"; //post 参数
- $curlObj = curl_init() ;
- curl_setopt($curlObj, CURLOPT_URL,$url) ;
- curl_setopt($curlObj, CURLOPT_POSTFIELDS,$postDate) ;
- $reruenValue = curl_exec($curlObj) ;
- curl_close($curlObj) ;
- ?>
work.php
- <?php
- echo json_encode(array('success'=>'false','log'=>implode(",",$_POST))); //我写的一个简单的json 格式的返回值.
- ?>
早上从新编译了本地php环境,把php更新到了5.3.0
下面简单的命名空间小例子:
/*
php namsespace
Request : php>=5.3.0
File Name : global.php
Author : cyd
E-mail : thisduan@gmail.com
*/
namespace china\beijing;
class city{
public static function tianAnMen(){
return “中国的心脏”;
}
public static function zhongShanglu(){
return “这条中山路在北京”;
}
}
?>
/*
php namsespace
Request : php>=5.3.0
File Name : index.php
Author : cyd
E-mail : thisduan@gmail.com
*/
namespace china\beijing\trip;
header(‘Content-Type: text/html; charset=utf-8′);
include_once(“global.php”);
class city{
public static function tianAnMen(){
return “我在这里就不中国的心脏,我是旅游景点。”;
}
public static function yiHeYuan(){
return “皇家园林”;
}
}
echo \china\beijing\city::tianAnMen();
echo \china\beijing\trip\city::yiHeYuan();
echo \china\beijing\trip\city::tianAnMen();
?>
今天安装MagickWand for php 编译老是如下错误:
MagickWand-config in default path... configure: error: Cannot locate configuration program MagickWand-config
打开源码包:
vi INSTALL
发现里面的安装要求:
MagickWand Extension for PHP :: Installation Instructions
** REQUIRED ** ImageMagick version :: 6.3.5-9
Last-known-good ImageMagick version :: 6.3.5-9
天那最低版本 要求在version :: 6.3.5-9
用
[root@localhost MagickWandForPHP-1.0.8]# Wand-config --version
我之前安装的版本是 6.2.7 太低了 重新安装个高版本的。
wget http://se.aminet.net/pub/multimedia/graphics/ImageMagick/ImageMagick-6.5.2-6.tar.gz
tar zvxf ImageMagick-6.5.2-6.tar.gzcd ImageMagick-6.5.2-6
./configure
make && make install
好了 再安装MagickWandForPHP-1.0.8
wget http://www.magickwand.org/download/php/MagickWandForPHP-1.0.8.tar.gztar zvxf MagickWandForPHP-1.0.8
cd MagickWandForPHP-1.0.8
/usr/local/php5/bin/phpize
./configure --with-php-config=/usr/local/php5/bin/php-config
make && make install
vi /usr/local/php5/etc/php.ini
增加 :extension=magickwand.so
重启 php-cig 和 nginx
查看 phpinfo

安装完毕