澳门皇冠金沙网站-澳门皇冠844网站

热门关键词: 澳门皇冠金沙网站,澳门皇冠844网站

PHP中preg_match_all函数正则匹配详解,高手讲解ph

Extended CHM PHP 语法手册之 DIY

preg_match_all — 执行一个全局正则表达式匹配

<?php   $url='http://www.baidu.com/';   $html=file_get_contents($url);   //print_r($http_response_header);   ec($html);   printhr();   printarr($http_response_header);   printhr();   ?>  
  1. Extended CHM 的主要特点
    可自定义右键菜单
    php代码块以语法高亮显示
    php代码块中的函数带有相应的函数手册链接
    更清晰的手册界面
    可以自定义手册的外观样式
    支持换肤功能
    更详尽的手册内容
    附带非常实用用户笔记
    可以集成于大多数ide和编辑器
    详细信息请访问
    <<;

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

示例代码1: 用file_get_contents 以get方式获取内容

  1. 为什么要 DIY
    不知为什么, 这么好的东东在 php 的官方网站上已经很久没有更新了 (最新的官方
    版本是 2003.9.6 发布的). 尤其是在 php5 发布以后更是有不少内容都查不到, 所
    以就只能发扬 DIY 精神, 来自己制作了. ^_^

  2. 预备知识
    cvs 客户端的使用.
    linux 环境下的基本操作, 以及软件的编译与安装.

  3. 软件需求
    cvs客户端软件:
    我们要通过 php 官方网站的 cvs 服务器来取得 phpdoc 的最新版本.
    windows 环境下推荐使用 wincvs中文版
    <<
    ncvs/>>
    unix 阵营的操作系统一般都自带 cvs 客户端,
    你可以在命令行下直接键入 "cvs version" 来检查 cvs 是否安装,
    如果没有安装请从
    <<; 中下载最新版
    本的 cvs 客户端
    Windows 操作系统:
    需要在 windows 系统中运行 Microsoft Html Help Workshop 来生成 chm 文件
    你也可以在linux下运行wine来模拟windows
    Microsoft Html Help Workshop
    微软发布的用语生成 chm 文件的工具
    <<Microsoft Html Help
    Workshop>>
    Linux 操作系统:
    我们需要在此进行手册和一些必备软件包的编译安装,
    你也可以使用其他的 unix 阵营的系统,
    或者干脆用 cygwin, vmware 等软件来在 Windows 下模拟一个 linux 环境
    PHP4.0或以上版本:
    编译和生成 chm 文件时均需要用到 php 所以你需要再 windows 和 linux 环境下
    都安装 php.
    本文所使用的环境:
    两台pc, 分别装有 redhat 9 以及 windows 2000 professional

  4. 开始 DIY
    首先, 在 linux 机中
    安装 OpenJada 和 OpenSP
    进入 linux 控制台

 

代码:--------------------------------------------------------------------------------
$mkdir /home/phpdoc
$cd /home/phpdoc
$wget ""
$wget ""
$tar -zxvf *.tar.gz
$cd openjade-1.3.2
$./configure
$make
$make install
$cd ../OpenSP-1.5.1
$./configure
$make
$make install

 代码如下

示例代码2: 用fopen打开url, 以get方式获取内容

$cd ../

然后, 我们要从 php 的官方 cvs 服务器中取得 phpdoc 的最新版本

代码:--------------------------------------------------------------------------------
$export CVSROOT=:pserver:cvsread@cvs.php.net:/repository
$cvs -z9 checkout phpdoc
$cd phpdoc
$cvs update -dP -D"December 31, 2002 11:00pm" xsl

<?php
preg_match_all("|<[^>] >(.*)</[^>] >|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $out, PREG_PATTERN_ORDER);
echo $out[0][0] . ", " . $out[0][1] . "n";
echo $out[1][0] . ", " . $out[1][1] . "n";
?>

<?php  $fp=fopen($url,'r');   printarr(stream_get_meta_data($fp));   printhr();   while(!feof($fp)){   $result.=fgets($fp,1024);   }   echo"url body: $result";   printhr();   fclose($fp);   ?>  

$cvs up -A xsl/version.xml xsl/docbook/html/chunker.xsl

设置编译参数

代码:--------------------------------------------------------------------------------
$autoconf

如何获取伪静态url中的参数变量,已经对应的值。

 

$./configure --with-chm=yes --with-lang=en

这时, 要做一些小小的修正
用编辑器打开 /home/phpdoc/phpdoc/xsl/htmlhelp-db.xsl
在此文件中搜索 "@DOCBOOKXSL_HTML@",
将其替换为 "./docbook/html/chunk.xsl", 并存盘退出
然后再打开 /home/phpdoc/phpdoc/xsl/html-common.xsl
将如下代码加入文件尾部</xsl:stylesheet>一行之上, 并存盘退出

代码:--------------------------------------------------------------------------------
<xsl:template match="collabname" mode="titlepage.mode">
<xsl:apply-templates />
</xsl:template>
<xsl:param name="chunker.output.doctype-system"
select="';
<xsl:param name="chunker.output.doctype-public" select="'-//W3C//DTD HTML

比如说。你现在url的是这样的。/js/d1b3cid419299191rs好脚本

示例代码3:用file_get_contents函数,以post方式获取url

4.01 Transitional//EN'"/>

然后继续执行编译操作,

代码:--------------------------------------------------------------------------------

你的.htaccess文件会这样写rewirte规则 RewriteRule ^js/(.*)$ /index.php?m=Sell&a=index&g=$1 [QSA,PT,L]

<?php   $data=array('foo'=>'bar');   $data=http_build_query($data);     $opts=array(   'http'=>array(   'method'=>'POST',   'header'=>"Content-type: application/x-www-form-urlencoded/r/n".   "Content-Length: ".strlen($data)."/r/n",   'content'=>$data   ),   );   $context=stream_context_create($opts);   $html=file_get_contents('http://localhost/e/admin/test.html',false,$context);   echo$html;   ?>  

$make chm_xsl

待编译结束以后, 我们需要取得最新的 php 镜像站点列表, 和用户笔记文件

代码:--------------------------------------------------------------------------------
$cd htmlhelp
$wget ""
$wget ""
$bunzip2 all.bz2

这样你就可以把g接收过来。

 

cd ../

可以把生成的文件打个包, 传至 windows 机上

代码:--------------------------------------------------------------------------------

 代码如下

示例代码4:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body

tar -czvf phpdoc.tar.gz ./htmlhelp

到这里, 需要再 linux 平台上执行的操作就完成了
现在起操作转到windows环境中
首先, 解压缩刚才生成的phpdoc.tar.gz
由于我所取得的版本编译后所生成的一些文件中, 相关函数的链接存在错误,
所以需要修改一下 htmlhelp/filter_files.php 文件
先在其头部加入如下代码

PHP代码:--------------------------------------------------------------------------------
//fix functions link error
function fix_function_link($m) {
$fname1 = 'function.'.strtolower(str_replace('_','-',$m[1])).'.html';
$fname2 = 'function.'.strtolower(str_replace('_','.',$m[1])).'.html';
if(file_exists("html/".$fname1)) {
return '<a href="'.$fname1.'"><b>'.$m[1].'()</b></a>';
}elseif(file_exists("html/".$fname2)) {
return '<a href="'.$fname2.'"><b>'.$m[1].'()</b></a>';
}else{
return '<a href="#" onclick="return false;"><b>'.$m[1].'()</b></a>';
}
}


然后在文件中找到如下这段代码

PHP代码:--------------------------------------------------------------------------------
// Read in the contents of the source file
$content = join("", file("$HTML_SRC/$filename"));


将其改为

PHP代码:--------------------------------------------------------------------------------
// Read in the contents of the source file
$content = join("", file("$HTML_SRC/$filename"));
$content = str_replace("»","»",$content);
$reg_fix = '/'.preg_quote('<a href="index.html"><b>', "/").'(w )()'.preg_quote('</b></a>', "/").'/is';
$content = preg_replace_callback($reg_fix,'fix_function_link',$content);
$reg_fix = '/'.preg_quote('<a href=""><b>', "/").'(w )()'.preg_quote('</b></a>', "/").'/is';
$content = preg_replace_callback($reg_fix,'fix_function_link',$content);


存盘后, 再将 "htmlhelplocal_vars.php.src" 重命名为
"htmlhelplocal_vars.php"
编辑 "htmlhelplocal_vars.php",
将其中的 $HELP_WORKSHOP 变量值设置为 Html Help Workshop 的安装目录, 存盘退

将 php.exe 所在目录加入 path 环境变量中.
在 "运行" 中键入 cmd 进入控制台模式,并进入 phpdoc.tar.gz 的释放目录

代码:--------------------------------------------------------------------------------
cd htmlhelp

$get = 'd1b3cid419299191rs好脚本';
$rs_pos = strpos($get,'rs');
if($rs_pos !== false)
{
    $rs = substr($get,$rs_pos);
    $rs = str_replace('rs','',$rs);
    $rs = strpos($rs,'/')!==false ? substr($rs,0,strpos($rs,'/')) : $rs;
    $get = substr($get,0,$rs_pos);
}
echo 'keywords='.$rs;
echo '<br>';
preg_match_all('/([a-z]*)([0-9] )/',$get,$m);
if($m)
{
        $k = $v = '';
        $count = count($m[1]);
        for($i = 0; $i <= $count; $i )
        {
            ${$m[1][$i]} = $m[2][$i];
            if(isset(${$m[1][$i]}))
            {   
                echo $m[1][$i].'='.${$m[1][$i]};
                echo '<br>';
            }
        }
}

 

make_chm.bat

待其执行结束后, Extended CHM 版的 php 语法手册就生成完毕了.
储存在 htmlhelp/release 目录下
再下载
<<php_manual_prefs.exe>>, 并保存在手册目录
执行此程序即可对手册中的右键菜单, 所用皮肤等进行设置了.
设置完成后, 双击 php_manual_en.chm 即可浏览手册了.(出处:Viphot)

结果:keywords=好脚本,d=1,b=3,cid=419299191

<?   functionget_url($url,$cookie=false){   $url=parse_url($url);   $query=$url[path]."?".$url[query];   ec("Query:".$query);   $fp=fsockopen($url[host],$url[port]?$url[port]:80,$errno,$errstr,30);   if(!$fp){   returnfalse;   }else{   $request="GET$queryHTTP/1.1/r/n";   $request.="Host:$url[host]/r/n";   $request.="Connection: Close/r/n";   if($cookie)$request.="Cookie: $cookie/n";   $request.="/r/n";   fwrite($fp,$request);   while(!@feof($fp)){   $result.=@fgets($fp,1024);   }   fclose($fp);   return$result;   }   }   //获取url的html部分,去掉header   functionGetUrlHTML($url,$cookie=false){   $rowdata=get_url($url,$cookie);   if($rowdata)   {   $body=stristr($rowdata,"/r/n/r/n");   $body=substr($body,4,strlen($body));   return$body;   }   returnfalse;   }   ?>  

 

示例代码5:用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

匹配文章中的图片

 

 

<?   functionHTTP_Post($URL,$data,$cookie,$referrer=""){   // parsing the given URL   $URL_Info=parse_url($URL);     // Building referrer   if($referrer=="")// if not given use this script. as referrer   $referrer="111";     // making string from $data   foreach($dataas$key=>$value)   $values[]="$key=".urlencode($value);   $data_string=implode("&",$values);     // Find out which port is needed - if not given use standard (=80)   if(!isset($URL_Info["port"]))   $URL_Info["port"]=80;     // building POST-request:   $request.="POST ".$URL_Info["path"]." HTTP/1.1/n";   $request.="Host: ".$URL_Info["host"]."/n";   $request.="Referer:$referer/n";   $request.="Content-type: application/x-www-form-urlencoded/n";   $request.="Content-length: ".strlen($data_string)."/n";   $request.="Connection: close/n";   $request.="Cookie: $cookie/n";   $request.="/n";   $request.=$data_string."/n";     $fp=fsockopen($URL_Info["host"],$URL_Info["port"]);   fputs($fp,$request);   while(!feof($fp)){   $result.=fgets($fp,1024);   }   fclose($fp);   return$result;   }   printhr();   ?>  

 代码如下

 

<?php
$con = file_get_contents("");
$pattern="/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg|.png]))['|"].*?[/]?>/";
preg_match_all($pattern,$con,$match);
print_r($match);
?>

示例代码6:使用curl库,使用curl库之前,你可能需要查看一下php.ini,查看是否已经打开了curl扩展

输出代码

<?   $ch = curl_init();   $timeout = 5;   curl_setopt ($ch, CURLOPT_URL, 'http://www.baidu.com/');   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);   curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);   $file_contents = curl_exec($ch);   curl_close($ch);   echo $file_contents;   ?>  

Array
(
[0] => Array
(
[0] => <img src="" alt="" />
[1] => <img style="display: block; margin-left: auto; margin-right: auto;" title="" src="" alt="2" />
[2] => <img style="display: block; margin-left: auto; margin-right: auto;" src="" alt="875EA1C00E50B4542797E24FA6E7E1F2.jpg" />
)
[1] => Array
(
[0] =>
[1] =>
[2] =>
)
)

 

稍微有点意义的函数是:get_content_by_socket(), get_url(), get_content_url(), get_content_object 几个函数,也许能够给你点什么想法。

<?php

//获取所有内容url保存到文件

function get_index($save_file, $prefix="index_"){

$count = 68;

$i = 1;

if (file_exists($save_file)) @unlink($save_file);

$fp = fopen($save_file, "a ") or die("Open ". $save_file ." failed");

while($i<$count){

$url = $prefix . $i .".htm";

echo "Get ". $url ."...";

$url_str = get_content_url(get_url($url));

echo " OK/n";

fwrite($fp, $url_str);

$i;

}

fclose($fp);

}

//获取目标多媒体对象

function get_object($url_file, $save_file, $split="|--:**:--|"){

if (!file_exists($url_file)) die($url_file ." not exist");

$file_arr = file($url_file);

if (!is_array($file_arr) || empty($file_arr)) die($url_file ." not content");

$url_arr = array_unique($file_arr);

if (file_exists($save_file)) @unlink($save_file);

$fp = fopen($save_file, "a ") or die("Open save file ". $save_file ." failed");

foreach($url_arr as $url){

if (empty($url)) continue;

本文由澳门皇冠金沙网站发布于编辑程序,转载请注明出处:PHP中preg_match_all函数正则匹配详解,高手讲解ph