php 遍历目录
<?php php 遍历目录
function CheckPHPExE($filename){
$img_exts = array("jpg");
foreach($img_exts as $this_ext){
if(preg_match("/\.$this_ext$/",$filename)){
return true;
}
}
return false;
}
function listDir($dir){
if(is_dir($dir)){
if ($dh = opendir($dir)){
while (($file= readdir($dh)) !== false){
if((is_dir($dir."/".$file)) && $file!="." && $file!=".."){
listDir($dir."/".$file."/");
}else{
if($file!="." && $file!=".."){
if(CheckPHPExE($file)){$file = Eregi_replace(".jpg","",$file); }
$conn=mysql_connect("localhost", "root");
$sql=mysql_select_db("cart",$conn);
$result=mysql_query("select * from cart where product_images='$file'",$conn);
$numrows=mysql_fetch_assoc($result);
$name=$numrows['product_images'];
if($name == ""){
$db = mysql_connect("localhost", "root");
mysql_select_db("cart", $db);
$sqlup = "insert into cart (product_images) values ('$file')";
$result = mysql_query($sqlup);
mysql_close($db);}
}
}
}
}
closedir($dh);
}
}
listDir("C:\\inetpub\\wwwroot\\upload\\");
如我们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们通过查询得到如下参数:1,总页数;2,每页篇数。第二步,for ($i = 0; $i < allpages; $i++),页面元素获取,分析,文章生成,都在此循环中执行。不同的是,die ("创建文件".$filename."成功!";这句去掉,放到循环后的显示,因为该语句将中止程序执行。例:
Code:
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$onepage = ''20'';
$sql = "select id from article where channel=''$channelid''";
$query = mysql_query ($sql);
$num = mysql_num_rows ($query);
$allpages = ceil ($num / $onepage);
for ($i = 0;$i<$allpages; $i++){
if ($i == 0){
$indexpath = "index.html";
} else {
$indexpath = "index_".$i."html";
}
$start = $i * $onepage;
$list = '''';
$sql_for_page = "select name,filename,title from article where channel=''$channelid'' limit $start,$onepage";
$query_for_page = mysql_query ($sql_for_page);
while ($result = $query_for_page){
$list .= ''''.$title.''
'';
}
$content = str_replace ("{ articletable }",$list,$content);
if (is_file ($indexpath)){
@unlink ($indexpath); //若文件已存在,则删除
}
$handle = fopen ($indexpath,"w"); //打开文件指针,创建文件
/*
检查文件是否被创建且可写
*/
if (!is_writable ($indexpath)){
echo "文件:".$indexpath."不可写,请检查其属性后重试!"; //修改为echo
}
if (!fwrite ($handle,$content)){ //将信息写入文件
echo "生成文件".$indexpath."失败!"; //修改为echo
}
fclose ($handle); //关闭指针
}
fclose ($fp);
die ("生成分页文件完成,如生成不完全,请检查文件权限系统后重新生成!");
?>
大致思路如此,其中如其它数据生成,数据输入输出检查,分页内容指向等可酌情在页面中加入。
在实际文章系统处理过程当中,还有许多问题有待考虑,与动态页面不同之处,需注意的地方还有很多。但大致思路即是如此,其它方面可举一反三而得。
今天我们就php foreach 用法与 php foreach key 来举一个简单的例子吧。
$test="bb|cccs|aaa";
$array =explode('|',$test);
$j =1;
foreach($array as $key){
$vote='vote_r'.$j;
if(0==$rs['vote_times']){
$n=1;
}else{
$n=$rs['vote_times'];www.111cn.net
}
echo $j,'、',$key,' ',$rs["$vote"],'票 ',($rs["$vote"]/$n)*100,'%<br>';
$j++;
}
上面是一个简的投票多项系统统计代码,我用了explode与foreach相结合.
原创作品: www.111cn.net
这个是用fopen取读远程文章的内容直接保存到本地了,这只是个简单的,仔细一点就是要分析要采集文章的结构,然后用正则取我们想要的内容,保存到数据并生成html文件就行了.
代码如下 | 复制代码 |
function getcontent($url,$html,$version,$google,$key1,$key2,$key3,$title) 这里可以用多种读取远程文章的办法 |
原创文章: www.111cn.net
php生成 google map代码
<title>Google Sitemap生成器</title>
<style type="text/css">
<!--
.agreement {
border: 1px solid #666666;
}
.green {
color: #00CC00;
font-weight: bold;
}
.red {color: #FF0000; font-weight: bold; }
#scroll {
border: 1px solid #0000FF;
line-height: 25px;
height: 25px;
width: 280px;
text-align: left;
}
.red{
background-color:#999999;
text-align: center;
filter:Alpha(opacity=80);/*透明度*/
}
#act {
background-image: url([img]http://www.gyqpw.com/img/loading.gif[/img]);
height: 27px;
width: 282px;
}
-->
</style>
<script>
var MyMar;
function monitoring()
{
if(document.readyState =='complete')
{
window.location='?i='+query_get();
}
}
function query_get()
{
var querystr = window.location.href.split("=");
if(!Number(querystr[1]))
{
var value=0;
}else{
var value=Number(querystr[1]);
}
return Number(value)+1;
}
MyMar=setInterval('monitoring()',3000);
</script>
<div style="text-align: center;" id=all_a>
<div align="center" id=act>
<div align="center" id=scroll>
<div class="red" style="width:1%;"></div>
</div>
</div>
</div>
<div align="center">
正在检索:<span id=link></span>
</div>
<div id="logs" class="agreement" style="height:420px; overflow:auto;">
<?
/*===========================================================
= 版权协议:
= GPL ()
=------------------------------------------------------------
= 摘 要:URL收集函数 PHP5
= 版 本:1.0
=------------------------------------------------------------
= 开源stal 项目组
= 更新作者:jd808
= 最后日期:2008-4-18
============================================================*/
$file='sitemap.xml'; //GOOGLE 需要的文件 执行时则做首页的临时URL存储文件
$temp_file='temp.xml';//内页URL临时存储文件
$url="http://www.gyqpw.com/"; //要搜索的网站
$timea=time();//开始时间 用户无需理它 只管上面3个参数即可
if(!$_GET['i'])
{
file_put_contents($file,'');
file_put_contents($temp_file,'');
file_put_contents($file,con($url,$timea));
echo "<script>
window.location='?i=bak';
</script>";
}else{
consts($_GET['i'],$timea,$file,$url);
}
function con($url,$timea) //控制
{
echo "<script>
document.getElementById('link').innerHTML='正在收集 ".$url." 的信息!';
</script>";
$str = file_get_contents($url);
$collection_url=collection_url($str,$url);
$collection_url=array_flip($collection_url);
foreach($collection_url as $key=>$value)
{
if(count(explode($url,$key))==2)
{
$strurl.=$key."\n";
}
}
return $strurl;
}
function consts($i,$timea,$file,$urlys)
{
$str =file_get_contents($file); //读取页面数据并生产字符串
$url=explode("\n",$str);
$sum=count($url)-1;
if($i=='bak')
{
$i=0;
}
/*进度条*/
$wid=round($i/$sum*100,2)."%";
$div="<div class='red' style='width:".$wid.";'>$wid</div>";
echo '<script>
document.getElementById("scroll").innerHTML="'.$div.'";
</script>';
ob_flush();//释放缓存
flush(); //将不再缓存里的数据发送到浏览器去
/*进度条END */
for($j=$i;$j<$sum;$j++)
{
if(!$url[$j])
{
continue;
}
if(!detection_url($url[$j])) //检测URL是否合法
{
continue;
}
$timeb=time();//跟踪时间
if(($timeb-$timea)>=25)
{
memory($collection_url,$j); //存储数据
}
/* URL显示跟踪*/
echo "<script>
document.getElementById('link').innerHTML='".$url[$j]."';
</script>";
ob_flush();//释放缓存
flush(); //将不再缓存里的数据发送到浏览器去
/* URL显示跟踪END*/
$urlstr=@file_get_contents($url[$j]);
$collection_url[]=collection_url($urlstr,$urlys);
$timec=time();//跟踪时间
if(($timec-$timea)>=25)
{
memory($collection_url,$j); //存储数据
}
if($j==$sum-1)
{
memorys(); //存储数据 主要是生成正式的xml
}
}
}
function collection_url($str,$url) //收集URL并返回一个数组(以页面为主)
{
preg_match_all('/<a.*?href="(.+?)"/is',$str,$matches);
$urlexp=$matches[1];
for($j=0;$j<count($urlexp);$j++)
{
$urlexp[$j]=ltrim(str_replace("\r\n",'',$urlexp[$j]));
$urlexp[$j]=ltrim(str_replace("\n",'',$urlexp[$j]));
$urlexp[$j]=ltrim(str_replace("\r",'',$urlexp[$j]));
if($urlexp[$j]=='#')
{
continue;
}
if($urlexp[$j]=='/#')
{
continue;
}
if(!strchr($urlexp[$j],'http://'))
{//没有http://
$urlall[]=$url.$urlexp[$j];
echo $url.$urlexp[$j].'<br>';
print "<script>document.getElementById('logs').scrollTop = document.getElementById('logs').scrollHeight;</script>";
ob_flush();//释放缓存
flush(); //将不再缓存里的数据发送到浏览器去
}else{
if(count(explode($url,$urlexp[$j]))==2)
{
$urlall[]=$urlexp[$j];
echo $urlexp[$j].'<br>';
print "<script>document.getElementById('logs').scrollTop = document.getElementById('logs').scrollHeight;</script>";
ob_flush();//释放缓存
flush(); //将不再缓存里的数据发送到浏览器去
}else{
unset($urlexp[$j]);
}
}
}
return $urlall; //返回本页面搜索所得到的数组
}
function memory($collection_url,$i)
{
global $temp_file;
if(is_array($collection_url))
{
for($h=0;$h<count($collection_url);$h++)
{
for($l=0;$l<count($collection_url[$h]);$l++)
{
$strts.=$collection_url[$h][$l]."\n";
}
}
$wstr=file_get_contents($temp_file);
file_put_contents($temp_file,$wstr.$strts);
if($i==0)
{
$i=2;
}
$k=$i-1;
echo "<script>
window.location='?i=".$k."';
</script>";
exit;
}
}
function memorys() //主要是生成正式的xml
{
global $temp_file,$file;
$file_arr=array_flip(file($file));
$temp_file_arr=array_flip(file($temp_file));
$xmla='<?xml version="1.0" encoding="UTF-8"?>'."\r\n".'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">';
$xmlc="\r\n</urlset>";
foreach($file_arr as $keya=>$valuea)
{
$keya=ltrim(str_replace("\r\n",'',$keya));
$keya=ltrim(str_replace("\n",'',$keya));
$keya=ltrim(str_replace("\r",'',$keya));
$xml.='<url>
<loc>'.$keya.'</loc>
<lastmod>'.date("Y-m-d",time()).'</lastmod>
<changefreq>daily</changefreq>
</url>';
}
foreach($temp_file_arr as $keyb=>$valueb)
{
$keyb=ltrim(str_replace("\r\n",'',$keyb));
$keyb=ltrim(str_replace("\n",'',$keyb));
$keyb=ltrim(str_replace("\r",'',$keyb));
$xml.='<url>
<loc>'.$keyb.'</loc>
<lastmod>'.date("Y-m-d",time()).'</lastmod>
<changefreq>daily</changefreq>
</url>';
}
$strts=$xmla.$xml.$xmlc;
file_put_contents($file,$strts);
echo "<script>
clearInterval(MyMar);
document.getElementById('link').innerHTML='URL已经收集完成!';
document.getElementById('all_a').innerHTML='<b>XML生成已完成!</b>';
</script>";
}
function detection_url($url)
{
if(strrchr($url,'='))
{
return true;
}
if(substr($url,strlen($url)-1,1)=='/')
{
return true;
}
$postfix= strrchr($url,'.');
switch ($postfix)
{
case ".php":
return true;
break;
case ".html":
return true;
break;
case ".htm":
return true;
break;
case ".asp":
return true;
break;
case ".aspx":
return true;
break;
case ".shtml":
return true;
break;
}
return false;
}
?>
</div>
相关文章
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- 今天小编就为大家分享一篇解决Pycharm的项目目录突然消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
下面小编就为大家带来一篇JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-05-20- 下面小编就为大家带来一篇js遍历json的key和value的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-01-26
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
借助jQuery我们可以轻松地堆DOM元素进行向上、向下遍历以及同级的遍历,本文我们即来整理jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结:...2016-07-25- 这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04docker 启动elasticsearch镜像,挂载目录后报错的解决
这篇文章主要介绍了docker 启动 elasticsearch镜像,挂载目录后报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-20- 这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
- 这篇文章主要介绍了idea out目录与target目录的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-08
- 下面就为大家带来一篇jquery对Json的各种遍历方法总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-02
- 这篇文章主要介绍了c# 遍历 Dictionary的四种方式,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2020-12-08
- 这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
- 今天小编大家分享一篇C#获得程序的根目录以及判断文件是否存在的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了C# 遍历datatable字段名和value的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-19
- 这篇文章介绍的是一个小技巧来获取node.js项目根目录,这个技巧非常实用。有需要的朋友们可以参考借鉴,下面来一起看看吧。...2016-10-02
- 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkdir($dir,0777)){ //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存...2015-11-08
- 这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02