PHP-CURL库常用功能 (2011-03-29)
使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据 了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。
PHP中的CURL函数库(Client URL Library Function)
curl_close — 关闭一个curl会话
curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数
curl_errno — 返回一个包含当前会话错误信息的数字编号
curl_error — 返回一个包含当前会话错误信息的字符串
curl_exec — 执行一个curl会话
curl_getinfo — 获取一个curl连接资源句柄的信息
curl_init — 初始化一个curl会话
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源
curl_multi_close — 关闭一个批处理句柄资源
curl_multi_exec — 解析一个curl批处理句柄
curl_multi_getcontent — 返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的curl的相关传输信息
curl_multi_init — 初始化一个curl批处理句柄资源
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
curl_setopt_array — 以数组的形式为一个curl设置会话参数
curl_setopt — 为一个curl设置会话参数
curl_version — 获取curl相关的版本信息
curl_init()函数的作用初始化一个curl会话,curl_init()函数唯一的一个参数是可选的,表示一个url地址。
curl_exec()函数的作用是执行一个curl会话,唯一的参数是curl_init()函数返回的句柄。
curl_close()函数的作用是关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄。
例
-
﹤?php
-
// 初始化一个 cURL 对象
-
$curl = curl_init();
-
-
// 设置你需要抓取的URL
-
curl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.cn');
-
-
// 设置header
-
curl_setopt($curl, CURLOPT_HEADER, 1);
-
-
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
-
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
-
-
// 运行cURL,请求网页
-
$data = curl_exec($curl);
-
-
// 关闭URL请求
-
curl_close($curl);
-
-
// 显示获得的数据
-
var_dump($data);
-
-
?>
例子二: POST数据
例子三:使用代理服务器
例子四: 模拟登录
Curl 模拟登录 discuz 程序,适合DZ7.0,将username改成你的用户名,userpass改成你的密码就可以了.
抓取和分析一个文件是非常简单的事。这个教程将通过一个例子带领你一步一步地去实现它。让我们开
始吧!
首先,我首必须决定我们将抓取的URL地址。可以通过在脚本中设定或通过$QUERY_STRING传递。为了简
单起见,让我们将变量直接设在脚本中。
<?
$url = 'http://www.php.net';
?>;
第二步,我们抓取指定文件,并且通过file()函数将它存在一个数组里。
<?
$url = 'http://www.php.net';
$lines_array = file($url);
?>;
好了,现在在数组里已经有了文件了。但是,我们想分析的文本可能不全在一行里面。为了解决这个文
件,我们可以简单地将数组$lines_array转化成一个字符串。我们可以使用implode(x,y)函数来实现它。如
果在后面你想用explode(将字符串变量数组),将x设成"|"或"!"或其它类似的分隔符可能会更好。但是出于
我们的目的,最好将x设成空格。y是另一个必要的参数,因为它是你想用implode()处理的数组。
<?
$url = 'http://www.php.net';
$lines_array = file($url);
$lines_string = implode('', $lines_array);
?>;
现在,抓取工作就做完了,下面该进行分析了。出于这个例子的目的,我们想得到在<head>;到</head>;
之间的所有东西。为了分析出字符串,我们还需要叫做正规表达式的东西。
<?
$url = 'http://www.php.net';
$lines_array = file($url);
$lines_string = implode('', $lines_array);
eregi("<head>;(.*)</head>;", $lines_string, $head);
?>;
让我们看一下代码。正如你所见,eregi()函数按下面的格式执行:
eregi("<head>;(.*)</head>;", $lines_string, $head);
"(.*)"表示所有东西,可以解释为,"分析在<head>;和</head>;间的所以东西"。$lines_string是我们正
在分析的字符串,$head是分析后的结果存放的数组。
最后,我们可以输数据。因为仅在<head>;和</head>;间存在一个实例,我们可以安全的假设数组中仅存
在着一个元素,而且就是我们想要的。让我们把它打印出来吧。
<?
$url = 'http://www.php.net';
$lines_array = file($url);
$lines_string = implode('', $lines_array);
eregi("<head>;(.*)</head>;", $lines_string, $head);
echo $head[0];
?>;
这就是全部的代码了。
Win7装memcached和svn自动添加$Id$,$Revision$等keywords (2011-03-24)
最近PHP工作上的两个小技巧,高手不要看了
一.Win7中安装memcached扩展,省去了网上大篇文章,三步即可完成
1.配置apache中的httpd.comf
找到LoadModule mem_cache_module modules/mod_mem_cache.so 把注释去掉
2.配置php.ini 加入memcache扩展
extension=php_memcache.dll
3.将php_memcache.dll复制到\ext扩展目录,重启apache,php就可以了(php_memcache.dll在附件中下载)
二.svn自动添加$Id$,$Revision$等keywords,简单总结步骤如下:
1.右键->settings->General->Subversion->Edit
找到#enable-auto-props = yes 把"#"注释删掉
添加以下配置
*.css = svn:keywords=LastChangedRevision LastChangedBy URL LastChangedDate Id
*.php = svn:keywords=LastChangedRevision LastChangedBy URL LastChangedDate Id
*.html = svn:keywords=LastChangedRevision LastChangedBy URL LastChangedDate Id
*.tpl = svn:keywords=LastChangedRevision LastChangedBy URL LastChangedDate Id
*.txt = svn:keywords=LastChangedRevision LastChangedBy URL LastChangedDate Id
*.js = svn:keywords=LastChangedRevision LastChangedBy URL LastChangedDate Id
这样修改后的效果是吧文件中的$Id$替换成版本等信息
如:$Id$ $LastChangedDate$ 提交后会自动添加版本信息
$Id: test.php 2058 2011-03-24 07:36:55Z wangzhen $
$LastChangedDate: 2011-03-24 15:36:55 +0800 (周四, 24 三月 2011) $
最近工作中遇到的小问题总结 (2011-03-03)
最近工作中遇到的小问题总结
1. PHP GD库生成图片中文乱码
要确保字体支持中文,
有必要进行编码转换$text=iconv( "GBK ", "UTF-8 ",$text);
如果用iconv函数不好使的情况下用
$text1 = mb_convert_encoding($text1, "html-entities","utf-8" );
乱码问题解决
2.MySql 字段类型错误,使用 Cast与Convert函数转换类型
遇到这样的问题,varchar字段排序的时候有错误
SELECT * FROM table ORDER BY user_score DESC
会得到这样的排序,显然是错误的
1
10
2
3
4
5
$sql = "SELECT *,CONVERT(user_score,SIGNED) FROM table
WHERE user_score < {$score}";
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
转换类型后问题解决
3.MySql 时间戳存储类型错误
时间戳存了INT类型显然是错误的,不能用DATE_FORMAT函数进行转换时间格式
$sql = "SELECT * , FROM_UNIXTIME( user_time, '%Y-%m-%d' ) AS user_date
FROM table";
使用FROM_UNIXTIME函数问题解决
以上都是一些小问题,但也浪费了一些时间
今后在建立数据字段类型的时候会严格按照类型建立,才不会出这么多问题
关于有效工作时间 (2011-02-24)
最近工作效率很低,于是自己反省了一下
以后要提高有效工作时间。
以下是是网上关于有效工作时间的说明
是指工人工作时间中的必须消耗的时间中的一项,与生产直接有关的时间消耗,包括准备与结束时间、基本工作时间和辅助工作时间。一般有效工作时间占上班时间的1/2已经很不错了。
调查数据表明,员工有效工作时间只有30%~40%,超过60%的工作时间都是无效的!如何解决这个难题?《大师亚斯》说,“难题总是以简单的方法解决”。工作日志,就是解决这个问题的一种简单办法。实践证明,只要遵循3E-PRC原则,就能通过工作日志这个简单工具,将有效工作时间提升到80%以上。

牛。。求源码分享,正在学习中,,

不能订阅你的博客呀~~ 