简单的php操作word文件实现代码

 更新时间:2016年11月25日 16:24  点击:1996
下面我们利用windown com组件来实现doc文件一些简单的操作,希望对你有所帮助。

<?php教程
// 建立一个指向新COM组件的索引
$word = new COM("word.application") or die("Can't start Word!");
// 显示目前正在使用的Word的版本号
//echo “Loading Word, v. {$word->Version}<br>”;
// 把它的可见性设置为0(假),如果要使它在最前端打开,使用1(真)
// to open the application in the forefront, use 1 (true)
//$word->Visible = 0;
echo $word->Version;
//打?一个文档
$word->Documents->OPen("C:wampwwwtest1.doc");
//读取文档内容

$test= $word->ActiveDocument->content->Text;

echo $test;
echo '<br>';
//将文档中需要换的变量更换一下
$test=str_replace('<{变量}>','这是变量',$test);
echo $test;
$word->Documents->Add();
// 在新文档中添加文字
$word->Selection->TypeText('$test');
//把文档保存在目录中
$word->Documents[1]->SaveAs("C:wampwwwtest2.doc");
// 关闭与COM组件之间的连接
$word->Quit();
?>

PHP分页实例代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>php教程 make page list</title>
<style type="text/CSS">
<!--
.page a:link {
 color: #0000FF;
 text-decoration: none;
}
.page a:visited {
 text-decoration: none;
 color: #0000FF;
}
.page a:hover {
 text-decoration: none;
 color: #0000FF;
}
.page a:active {
 text-decoration: none;
 color: #0000FF;
}
.page{color:#0000FF;}
-->
</style>
</head>
<body>
<table width="530" height="103" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
  <tr>
    <th width="30" height="38" bgcolor="#E3E3E3" scope="col">ID</th>
    <th width="500" bgcolor="#E3E3E3" scope="col">文章标题</th>
  </tr>
<?php
/*
 * Created on 2010-4-17
 *
 * Order by Kove Wong
 */
 $link=MySQL_connect(’localhost’,’root’,’haoxiazai1987’);
 mysql教程_select_db(’pagelist’);
 mysql_query(’set names gbk’);

 $Page_size=10;

 $result=mysql_query(’select * from v_char’);
 $count = mysql_num_rows($result);
 $page_count  = ceil($count/$Page_size);

 $init=1;
 $page_len=7;
 $max_p=$page_count;
 $pages=$page_count;

 //判断当前页码
 if(empty($_GET[’page’])||$_GET[’page’]<0){
  $page=1;
 }else {
 $page=$_GET[’page’];
}

 $offset=$Page_size*($page-1);
 $sql="select * from v_char limit $offset,$Page_size";
 $result=mysql_query($sql,$link);
 while ($row=mysql_fetch_array($result)) {
?>
  <tr>
    <td bgcolor="#E0EEE0" height="25px"><div align="center">
      <?php echo $row[’id’]?>
    </div></td>
    <td bgcolor="#E0EEE"><div align="center">
      <?php echo $row[’name’]?>
    </div></td>
  </tr>
<?php
}
 $page_len = ($page_len%2)?$page_len:$pagelen+1;//页码个数
 $pageoffset = ($page_len-1)/2;//页码个数左右偏移量

 $key=’<div class="page">’;
 $key.="<span>$page/$pages</span>&nbsp;";   //第几页,共几页
 if($page!=1){
 $key.="<a href="".$_SERVER[’PHP_SELF’]."?page=1">第一页</a> ";    //第一页
 $key.="<a href="".$_SERVER[’PHP_SELF’]."?page=".($page-1)."">上一页</a>"; //上一页
}else {
 $key.="第一页 ";//第一页
 $key.="上一页"; //上一页
}
 if($pages>$page_len){
 //如果当前页小于等于左偏移
 if($page<=$pageoffset){
 $init=1;
 $max_p = $page_len;
 }else{//如果当前页大于左偏移
 //如果当前页码右偏移超出最大分页数
 if($page+$pageoffset>=$pages+1){
 $init = $pages-$page_len+1;
 }else{
 //左右偏移都存在时的计算
 $init = $page-$pageoffset;
 $max_p = $page+$pageoffset;
 }
 }
  }
  for($i=$init;$i<=$max_p;$i++){
 if($i==$page){
 $key.=’ <span>’.$i.’</span>’;
 } else {
 $key.=" <a href="".$_SERVER[’PHP_SELF’]."?page=".$i."">".$i."</a>";
 }
  }
  if($page!=$pages){
 $key.=" <a href="".$_SERVER[’PHP_SELF’]."?page=".($page+1)."">下一页</a> ";//下一页
 $key.="<a href="".$_SERVER[’PHP_SELF’]."?page={$pages}">最后一页</a>"; //最后一页
 }else {
 $key.="下一页 ";//下一页
 $key.="最后一页"; //最后一页
 }
 $key.=’</div>’;
?>
 <tr>
    <td colspan="2" bgcolor="#E0EEE0"><div align="center"><?php echo $key?></div></td>
  </tr>
</table>
</body>
</html>

表四:Socket函数
函数名      描述
socket_accept()    接受一个Socket连接
socket_bind()     把socket绑定在一个IP地址和端口上
socket_clear_error()   清除socket的错误或者最后的错误代码
socket_close()     关闭一个socket资源
socket_connect()    开始一个socket连接
socket_create_listen()   在指定端口打开一个socket监听
socket_create_pair()   产生一对没有区别的socket到一个数组里
socket_create()    产生一个socket,相当于产生一个socket的数据结构
socket_get_option()    获取socket选项
socket_getpeername()   获取远程类似主机的ip地址
socket_getsockname()   获取本地socket的ip地址
socket_iovec_add()    添加一个新的向量到一个分散/聚合的数组
socket_iovec_alloc()   这个函数创建一个能够发送接收读写的iovec数据结构
socket_iovec_delete()   删除一个已经分配的iovec
socket_iovec_fetch()   返回指定的iovec资源的数据
socket_iovec_free()    释放一个iovec资源
socket_iovec_set()    设置iovec的数据新值
socket_last_error()    获取当前socket的最后错误代码
socket_listen()     监听由指定socket的所有连接
socket_read()     读取指定长度的数据
socket_readv()     读取从分散/聚合数组过来的数据
socket_recv()     从socket里结束数据到缓存
socket_recvfrom()    接受数据从指定的socket,如果没有指定则默认当前socket
socket_recvmsg()    从iovec里接受消息
socket_select()     多路选择
socket_send()     这个函数发送数据到已连接的socket
socket_sendmsg()    发送消息到socket
socket_sendto()    发送消息到指定地址的socket
socket_set_block()    在socket里设置为块模式
socket_set_nonblock()   socket里设置为非块模式
socket_set_option()    设置socket选项
socket_shutdown()    这个函数允许你关闭读、写、或者指定的socket
socket_strerror()    返回指定错误号的详细错误
socket_write()     写数据到socket缓存
socket_writev()    写数据到分散/聚合数组

更多详细内容请查看:php教程er/30/7cadb3c9195ac7d8ac9104da61a25c6e.htm">http://www.111cn.net/phper/30/7cadb3c9195ac7d8ac9104da61a25c6e.htm
<?php 
//post.php
function Post($host,$port)
{
//$host="127.0.0.1";
//建立连接
$conn = fsockopen($host,$port);
if (!$conn)
{
die("Con error");
}
//循环发送5次数据
//
for($i = 0;$i<5;$i++)
{
$data="user_name=admin".$i;
WriteData($conn,$host,$data);
echo $i."<br />";
}

fclose($conn);
}

function WriteData($conn,$host,$data)
{
$header = "POST /test.php HTTP/1.1rn";
$header.= "Host : {$host}rn";
$header.= "Content-type: application/x-www-form-urlencodedrn";
$header.= "Content-Length:".strlen($data)."rn";
//Keep-Alive是关键
$header.= "Connection: Keep-Alivernrn";
$header.= "{$data}rnrn";

fwrite($conn,$header);

//取结果
//$result = '';
//while(!feof($conn))
//{
// $result .= fgets($conn,128);
//}
//return $result;
}

Post('127.0.0.1',80);

?>
<?php 
//test.php
$fp = fopen('result.txt','a');
$data = $_POST['user_name']." -- ". date('Y-m-d H:i:s')."rn";
fwrite($fp,$data);
fclose($fp);
?>
再模仿post实现用户登录
socket.php
<?php
/**
* @author macopad@qq.com
* 模拟socket发送post方式发送数据
* 发送文件为socket.php
* 接收数据为get_socket.php
* @var unknown_type
*/
$flag = 0;
//要post的数据
$argv = array(
‘username’=>’macopad@qq.com’,
‘password’=>’macopad’
);
//构造要 post的字符串
$params = ”;
foreach ($argv as $key=>$value)
{
if ($flag!=0)
{
$params .= ”&”;
$flag = 1;
}
$params.= $key.”=”;
$params.= urlencode($value);
$flag = 1;
}
$length = strlen($params);//post的长度
//创建socket连接
$post = fsockopen($HTTP_SERVER_VARS["SERVER_ADDR"],80,$errno,$errstr,10) or exit($errstr.”—>”.$errno);
//构造post请求的头
$header = ”POST /guojinyong/test/get_socket.php HTTP/1.1rn”; //制定为 POST的方法提交数据 及要提交到的页面和协议类型
$header .= ”Host:”.$HTTP_SERVER_VARS["SERVER_ADDR"].”rn”;   //定义主机
$header .= ”Referer:http://”.$HTTP_SERVER_VARS["SERVER_ADDR"].”/guojinyong/test/socket.phprn”; //Referer信息,
$header .= ”Content-Type: application/x-www-form-urlencodedrn”; //说明这个请求为POST
$header .= ”Content-Length: ”.$length.”rn”; //提交的数据长度
$header .= ”Connection: Closernrn”;//关闭连接
$header .= $params.”rn”;//添加post的字符串
//发送post的数据
fputs($post,$header);
//接收get_socket.php返回的数据并打印出来
while(!feof($post))
{
echo fgets($post,1024);//从1024个字节之后开始获取
}
fclose($post); //关闭socket连接
?>

get_socket.php
<?php
echo ”Set-Cookie:name=Macopad; expires=Fri 12-Nov-99 3:59:59 GMT”;
$userName = ”";
$password = ”";
$userName = $_POST['username'];
$password = $_POST['password'];
echo ”<br>通过socket模拟程序发送数据!<br>”;
echo ”当前服务器是:”.$HTTP_SERVER_VARS["SERVER_ADDR"].”<br>”;
echo ”接受到的用户名是:” .$userName.”<br>接收到的密码是:”.$password;
显示结果
HTTP/1.1 200 OK Date: Wed, 14 Apr 2010 06:49:07 GMT Server: Apache X-Powered-By: PHP/5.2.5 Cache-Control: max-age=0 Expires: Wed, 14 Apr 2010 06:49:07 GMT Vary: Accept-Encoding Content-Length: 189 Connection: close Content-Type: text/html Set-Cookie:name=Macopad; expires=Fri 12-Nov-99 3:59:59 GMT
通过socket模拟程序发送数据!
当前服务器是:http://www.111cn.net
接受到的用户名是:macopad@qq.com
接收到的密码是:macopad

以前有用过dedecms分词功能,经过测试还是不理想,后来经过一些处理得到的结果还是可以接受的,今天我再看到这款分词法,拿出来给大家看看。

<?php教程
class NLP{
private static $cmd_path;
// 不以'/'结尾
static function set_cmd_path($path){
self::$cmd_path = $path;
}
private function cmd($str){
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
);
$cmd = self::$cmd_path . "/ictclas";
$process = proc_open($cmd, $descriptorspec, $pipes);
if (is_resource($process)) {
$str = iconv('utf-8', 'gbk', $str);
fwrite($pipes[0], $str);
$output = stream_get_contents($pipes[1]);
fclose($pipes[0]);
fclose($pipes[1]);
$return_value = proc_close($process);
}
/*
$cmd = "printf '$input' | " . self::$cmd_path . "/ictclas";
exec($cmd, $output, $ret);
$output = join("n", $output);
*/
$output = trim($output);
$output = iconv('gbk', 'utf-8', $output);
return $output;
}
/**
* 进行分词, 返回词语列表.
*/
function tokenize($str){
$tokens = array();
$output = self::cmd($input);
if($output){
$ps教程 = preg_split('/s+/', $output);
foreach($ps as $p){
list($seg, $tag) = explode('/', $p);
$item = array(
'seg' => $seg,
'tag' => $tag,
);
$tokens[] = $item;
}
}
return $tokens;
}
}
NLP::set_cmd_path(dirname(__FILE__));
?>

用起来很简单(确保 ICTCLAS 编译后的可执行文件和词典在当前目录):
复制代码 代码如下:
<?php
require_once('NLP.php');
var_dump(NLP::tokenize('Hello, World!'));
?>

进行中文分词的 PHP 类就在下面了, 用 proc_open() 函数来执行分词程序, 并通过管道和其交互, 输入要进行分词的文本, 读取分词结果。

 

PHP中使用最多的非Array莫属了,那Array是如何实现的?在PHP内部Array通过一个hashtable来实现,其中使用链接法解决hash冲突的问题,这样最坏情况下,查找Array元素的复杂度为O(N),最好则为1.

 

static inline ulong zend_inline_hash_func(const char *arKey, uint nKeyLength)
{
register ulong hash = 5381; //此处初始值的设置有什么玄机么?
/* variant with the hash unrolled eight times */
for (; nKeyLength >= 8; nKeyLength -= 8) { //这种step=8的方式是为何?
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++; //比直接*33要快
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
hash = ((hash << 5) + hash) + *arKey++;
}
switch (nKeyLength) {
case 7: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */ //此处是将剩余的字符hash
case 6: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 5: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 4: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 3: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 2: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */
case 1: hash = ((hash << 5) + hash) + *arKey++; break;
case 0: break;
EMPTY_SWITCH_DEFAULT_CASE()
}
return hash;//返回hash值
}
[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25