php foreach用法
今天我们就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
<?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\\");
这个是用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>
php文件处理类
<?php
//-------------------------------------
//-------------------------------------
class upload {
var $dir; //附件存放物理目录
var $time; //自定义文件上传时间
var $allow_types; //允许上传附件类型
var $field; //上传控件名称
var $maxsize; //最大允许文件大小,单位为KB
var $thumb_width; //缩略图宽度
var $thumb_height; //缩略图高度
var $watermark_file; //水印图片地址
var $watermark_pos; //水印位置
var $watermark_trans;//水印透明度
//构造函数
//$types : 允许上传的文件类型 , $maxsize : 允许大小 , $field : 上传控件名称 , $time : 自定义上传时间
function upload($types = 'jpg|png', $maxsize = 1024, $field = 'attach', $time = '') {
$this->allow_types = explode('|',$types);
$this->maxsize = $maxsize * 1024;
$this->field = $field;
$this->time = $time ? $time : time();
}
//设置并创建文件具体存放的目录
//$basedir : 基目录,必须为物理路径
//$filedir : 自定义子目录,可用参数{y}、{m}、{d}
function set_dir($basedir,$filedir = '') {
$dir = $basedir;
!is_dir($dir) && @mkdir($dir,0777);
if (!empty($filedir)) {
$filedir = str_replace(array('{y}','{m}','{y}'),array(date('Y',$this->time),date('m',$this->time),date('d',$this->time)),strtolower($filedir));
$dirs = explode('/',$filedir);
foreach ($dirs as $d) {
!empty($d) && $dir .= $d.'/';
!is_dir($dir) && @mkdir($dir,0777);
}
}
$this->dir = $dir;
}
//图片缩略图设置,如果不生成缩略图则不用设置
//$width : 缩略图宽度 , $height : 缩略图高度
function set_thumb ($width = 0, $height = 0) {
$this->thumb_width = $width;
$this->thumb_height = $height;
}
//图片水印设置,如果不生成添加水印则不用设置
//$file : 水印图片 , $pos : 水印位置 , $trans : 水印透明度
function set_watermark ($file, $pos = 6, $trans = 80) {
$this->watermark_file = $file;
$this->watermark_pos = $pos;
$this->watermark_trans = $trans;
}
/*----------------------------------------------------------------
执行文件上传,处理完返回一个包含上传成功或失败的文件信息数组,
其中:name 为文件名,上传成功时是上传到服务器上的文件名,上传失败则是本地的文件名
dir 为服务器上存放该附件的物理路径,上传失败不存在该值
size 为附件大小,上传失败不存在该值
flag 为状态标识,1表示成功,-1表示文件类型不允许,-2表示文件大小超出
-----------------------------------------------------------------*/
function execute() {
$files = array(); //成功上传的文件信息
$field = $this->field;
$keys = array_keys($_FILES[$field]['name']);
foreach ($keys as $key) {
if (!$_FILES[$field]['name'][$key]) continue;
$fileext = $this->fileext($_FILES[$field]['name'][$key]); //获取文件扩展名
$filename = $this->time.mt_rand(100,999).'.'.$fileext; //生成文件名
$filedir = $this->dir; //附件实际存放目录
$filesize = $_FILES[$field]['size'][$key]; //文件大小
//文件类型不允许
if (!in_array($fileext,$this->allow_types)) {
$files[$key]['name'] = $_FILES[$field]['name'][$key];
$files[$key]['flag'] = -1;
continue;
}
//文件大小超出
if ($filesize > $this->maxsize) {
$files[$key]['name'] = $_FILES[$field]['name'][$key];
$files[$key]['flag'] = -2;
continue;
}
$files[$key]['name'] = $filename;
$files[$key]['dir'] = $filedir;
$files[$key]['size'] = $filesize;
//保存上传文件并删除临时文件
if (is_uploaded_file($_FILES[$field]['tmp_name'][$key])) {
move_uploaded_file($_FILES[$field]['tmp_name'][$key],$filedir.$filename);
@unlink($_FILES[$field]['tmp_name'][$key]);
$files[$key]['flag'] = 1;
//对图片进行加水印和生成缩略图
if (in_array($fileext,array('jpg','png','gif'))) {
if ($this->thumb_width) {
if ($this->create_thumb($filedir.$filename,$filedir.'thumb_'.$filename)) {
$files[$key]['thumb'] = 'thumb_'.$filename; //缩略图文件名
}
}
$this->create_watermark($filedir.$filename);
}
}
}
return $files;
}
//创建缩略图,以相同的扩展名生成缩略图
//$src_file : 来源图像路径 , $thumb_file : 缩略图路径
function create_thumb ($src_file,$thumb_file) {
$t_width = $this->thumb_width;
$t_height = $this->thumb_height;
if (!file_exists($src_file)) return false;
$src_info = getImageSize($src_file);
//如果来源图像小于或等于缩略图则拷贝源图像作为缩略图
if ($src_info[0] <= $t_width && $src_info[1] <= $t_height) {
if (!copy($src_file,$thumb_file)) {
return false;
}
return true;
}
//按比例计算缩略图大小
if ($src_info[0] - $t_width > $src_info[1] - $t_height) {
$t_height = ($t_width / $src_info[0]) * $src_info[1];
} else {
$t_width = ($t_height / $src_info[1]) * $src_info[0];
}
//取得文件扩展名
$fileext = $this->fileext($src_file);
switch ($fileext) {
case 'jpg' :
$src_img = ImageCreateFromJPEG($src_file); break;
case 'png' :
$src_img = ImageCreateFromPNG($src_file); break;
case 'gif' :
$src_img = ImageCreateFromGIF($src_file); break;
}
//创建一个真彩色的缩略图像
$thumb_img = @ImageCreateTrueColor($t_width,$t_height);
//ImageCopyResampled函数拷贝的图像平滑度较好,优先考虑
if (function_exists('imagecopyresampled')) {
@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
} else {
@ImageCopyResized($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
}
//生成缩略图
switch ($fileext) {
case 'jpg' :
ImageJPEG($thumb_img,$thumb_file); break;
case 'gif' :
ImageGIF($thumb_img,$thumb_file); break;
case 'png' :
ImagePNG($thumb_img,$thumb_file); break;
}
//销毁临时图像
@ImageDestroy($src_img);
@ImageDestroy($thumb_img);
return true;
}
//为图片添加水印
//$file : 要添加水印的文件
function create_watermark ($file) {
//文件不存在则返回
if (!file_exists($this->watermark_file) || !file_exists($file)) return;
if (!function_exists('getImageSize')) return;
//检查GD支持的文件类型
$gd_allow_types = array();
if (function_exists('ImageCreateFromGIF')) $gd_allow_types['image/gif'] = 'ImageCreateFromGIF';
if (function_exists('ImageCreateFromPNG')) $gd_allow_types['image/png'] = 'ImageCreateFromPNG';
if (function_exists('ImageCreateFromJPEG')) $gd_allow_types['image/jpeg'] = 'ImageCreateFromJPEG';
//获取文件信息
$fileinfo = getImageSize($file);
$wminfo = getImageSize($this->watermark_file);
if ($fileinfo[0] < $wminfo[0] || $fileinfo[1] < $wminfo[1]) return;
if (array_key_exists($fileinfo['mime'],$gd_allow_types)) {
if (array_key_exists($wminfo['mime'],$gd_allow_types)) {
//从文件创建图像
$temp = $gd_allow_types[$fileinfo['mime']]($file);
$temp_wm = $gd_allow_types[$wminfo['mime']]($this->watermark_file);
//水印位置
switch ($this->watermark_pos) {
case 1 : //顶部居左
$dst_x = 0; $dst_y = 0; break;
case 2 : //顶部居中
$dst_x = ($fileinfo[0] - $wminfo[0]) / 2; $dst_y = 0; break;
case 3 : //顶部居右
$dst_x = $fileinfo[0]; $dst_y = 0; break;
case 4 : //底部居左
$dst_x = 0; $dst_y = $fileinfo[1]; break;
case 5 : //底部居中
$dst_x = ($fileinfo[0] - $wminfo[0]) / 2; $dst_y = $fileinfo[1]; break;
case 6 : //底部居右
$dst_x = $fileinfo[0]-$wminfo[0]; $dst_y = $fileinfo[1]-$wminfo[1]; break;
default : //随机
$dst_x = mt_rand(0,$fileinfo[0]-$wminfo[0]); $dst_y = mt_rand(0,$fileinfo[1]-$wminfo[1]);
}
if (function_exists('ImageAlphaBlending')) ImageAlphaBlending($temp_wm,True); //设定图像的混色模式
if (function_exists('ImageSaveAlpha')) ImageSaveAlpha($temp_wm,True); //保存完整的 alpha 通道信息
//为图像添加水印
if (function_exists('imageCopyMerge')) {
ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1],$this->watermark_trans);
} else {
ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1]);
}
//保存图片
switch ($fileinfo['mime']) {
case 'image/jpeg' :
@imageJPEG($temp,$file);
break;
case 'image/png' :
@imagePNG($temp,$file);
break;
case 'image/gif' :
@imageGIF($temp,$file);
break;
}
//销毁零时图像
@imageDestroy($temp);
@imageDestroy($temp_wm);
}
}
}
//获取文件扩展名
function fileext($filename) {
return strtolower(substr(strrchr($filename,'.'),1,10));
}
}
?>
相关文章
- using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
下面小编就为大家带来一篇JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-05-20浅谈Java8 的foreach跳出循环break/return
这篇文章主要介绍了Java8 的foreach跳出循环break/return,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-28- Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
mybatis-plus mapper中foreach循环操作代码详解(新增或修改)
这篇文章主要介绍了mybatis-plus mapper中foreach循环操作代码详解(新增或修改),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-17- 最新版下载: http://www.csdn123.com/uploadfile/2015/0428/20150428062734485.zip 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生...2016-05-19
- 这篇文章主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C++中cin的用法详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 这篇文章主要介绍了Nodejs 数组的队列以及forEach的应用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-25
- useState 通过在函数组件里调用它来给组件添加一些内部 state,React 会在重复渲染时保留这个 state,接下来通过一个示例来看看怎么使用 useState吧...2021-06-04
- 这篇文章主要介绍了Xml中使用foreach遍历对象实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-04
- 这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
PHP中print_r、var_export、var_dump用法介绍
文章详细的介绍了关于PHP中print_r、var_export、var_dump区别比较以及这几个在php不同的应用中的用法,有需要的朋友可以参考一下 可以看出print_r跟var_export都...2016-11-25- 在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input。 下面的例子摘取的是wordpres...2016-11-25
- 1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表结构时为表加上主键,如: ALTER TABLE tbl_name ADD PRIMARY KEY (in...2015-11-24
- 本文给大家汇总介绍了C#中的几种this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码。...2020-06-25
- 这篇文章主要介绍了C#使用foreach语句遍历二维数组的方法,实例分析了C#遍历数组的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 目前在做window.onerror时上报js错误信息的事,整理下相关资料,需要的朋友可以参考下...2016-01-29
- 这篇文章主要介绍了C语言循环结构与时间函数用法,是C语言中非常重要的一个技巧,需要的朋友可以参考下...2020-04-25
解决mybatis使用foreach批量insert异常的问题
这篇文章主要介绍了解决mybatis使用foreach批量insert异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09