程序
代码如下 | 复制代码 |
/** |
使用范例:
代码如下 | 复制代码 |
//GBK字符串测试 |
具体代码
代码如下 | 复制代码 |
<?php |
调用方法上面有介绍了我就不说了,我们只是要注意$runtime->start();与$runtime->spent()必须,一前一后哦,否则是无效的,还有不能放在缓存页面中和html页面中。
代码如下 | 复制代码 |
<?php #########随机广告显示########## function myads(){ $dir="ads"; #设置存放记录的目录 //$dir="ads"; #设置存放记录的目录 $ads="$dir/ads.txt"; #设置广告代码文件 $log ="$dir/ads.log"; #设置ip记录文件 $ads_lines=file($ads); $lines=count($ads_lines);#文件总行数 ####读出广告总数$ads_count和显示次数到数组$display_array######## $ads_count=0; $display_count=0; for ($i=0;$i<$lines;$i++){ if((!strcmp(substr($ads_lines[$i],0,7),"display"))){ $ads_count+=1; $display_array[$ads_count]=substr($ads_lines[$i],8); $display_count+=$display_array[$ads_count]; } } ####决定随机显示序号$display_rand##### srand((double)microtime()*1000000); $display_rand = rand(1,$display_count); ###决定广告序号$ads_num###### $pricount=0; $ads_num=1; for($i=1; $i<=$ads_count; $i++) { $pricount += $display_array[$i]; if ($display_rand<=$pricount) {$ads_num=$i;break;} } #####播放广告######## $num=0; $flag=0; for($i=0;$i<$lines;$i++){ if((!strcmp(substr($ads_lines[$i],0,7),"display"))){$num++;} if(($num==$ads_num)and($flag==0)){$flag=1;continue;} if(($flag==1)and strcmp($ads_lines[$i][0],"#")){echo $ads_lines[$i];continue;} if(($flag==1)and(!(strcmp($ads_lines[$i][0],"#")))){break;} } ####纪录广告显示次数######### $fp=fopen($log,"a"); fputs($fp,date( "Y-m-d H:i:s " ).getenv("REMOTE_ADDR")."==>".$ads_num."n"); fclose($fp); } ?> |
广告代码文件ads.txt
代码如下 | 复制代码 |
########每个广告代码之间用'#'隔开,display为显示加权数,越大显示次数越多################ ################################ display=10 <a href="http://www.111cn.net"> <img" width=100% src="h/c_banner.gif" alt="Chance2mail,好礼物送给您!"> </a> ################################ display=10 <a href="http://www.111cn.net" target=_blank> <img" width=100% src="8848.gif" width="468" height="60" border="0"></a> |
调用
<?php myads();?>
即可
在php中数据查询可以分类一维数组查找,与多维数组查找了,如果是简单的一维数组我们可以直接使用in_array ,array_search 与遍历来实例了,如果是多维数组就需要使用其它办法。对于一维数组我们可以如下操作
in_array '函数在数组中搜索给定的值。in_array(value,array,type)type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
array_key_exists 'array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。array_key_exists(key,array)
array_search 'array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。array_search(value,array,strict)
从这里来看,在数据量不大的时候,比如小于1000,查找用哪一种都行,都不会成为瓶颈;
当数据量比较大的时候,用array_key_exists比较合适。
当然这里array_key_exists占用的内存比较大,经测算
二分法查找数组是否包含某一元素,兼容正反序,代码实现:
代码如下 | 复制代码 |
<?php $searchValue = (int)$_GET['key']; function search(array $array, $value) while (TRUE) { if ($max < $min) { $array = array( // 逆序 |
例二
PHP 查找数组第i小元素
代码如下 | 复制代码 |
<?php |
判断一个字符串是否含有超级链接
代码如下 | 复制代码 |
$str="ssdsf<a target='_blank' href='http://www.111cn.net/' >sdf</a>sdfss"; |
下面我们只要过滤连接部份。
代码如下 | 复制代码 |
<?php |
正则:/(?<=href=)([^>]*)(?=>)/
(?<=exp) 匹配exp后面的位置
(?=exp) 匹配exp前面的位置
此正则 匹配 在 href= 之后 “>” 之前 的 非 “>” 的所有字符
例子:<a href='www.111cn.net '>
找到这些字符(url)用 # 替换,就可以去掉html里的所有链接。
现在分享一个提取超级连接的实例
代码如下 | 复制代码 |
function match_links($document) { preg_match_all("'<s*as.*?hrefs*=s*(["'])?(?(1)(.*?)\1|([^s>]+))[^>]*>?(.*?)</a>'isx",$document,$links); while(list($key,$val) = each($links[2])) { if(!empty($val)) $match['link'][] = $val; } while(list($key,$val) = each($links[3])) { if(!empty($val)) $match['link'][] = $val; } while(list($key,$val) = each($links[4])) { if(!empty($val)) $match['content'][] = $val; } while(list($key,$val) = each($links[0])) { if(!empty($val)) $match['all'][] = $val; } return $match; } |