当前位置:  编程技术>php
本页文章导读:
    ▪php代码列出一个目录下的所有文件      以下的代码是从某cms提取出来的,供大家学习参考。   代码如下: <?php /**   目录处理函数 */ function dir_path($path) { $path = str_replace()('\\', '/', $path); if (substr($path, -1) != '/') $path = $path . '/'; .........
    ▪php取得文件的后缀名的方法      一种方法是使用数组,先把文件名切割成数组,然后想办法取得数组最后一个元素。 第二种种方法是通过字符串的处理来完成。 还有一种方法是用pathinfo()函数。 下面我们来看代码。 代码.........
    ▪如何解析百度搜索结果link?url=参数      百度搜索结果的网址改变了,变成link?url=………这样的重定向格式了。 网上大概给出了如下的方法: 1、加密方式根据:随机+输入停留时间+快照地址进行加密 2、整个代码中应该有三个.........

[1]php代码列出一个目录下的所有文件
    来源: 互联网  发布时间: 2013-12-24

以下的代码是从某cms提取出来的,供大家学习参考。
 

代码如下:
<?php
/**
  目录处理函数
*/
function dir_path($path) {
$path = str_replace()('\\', '/', $path);
if (substr($path, -1) != '/') $path = $path . '/';
return $path;
}
/**
* 列出目录下的所有文件
*
* @param str $path 目录
* @param str $exts 后缀
* @param array $list 路径数组
* @return array 返回路径数组
*/
function dir_list($path, $exts = '', $list = array()) {
$path = dir_path($path);
$files = glob($path . '*');
foreach($files as $v) {
if (!$exts || preg_match("/\.($exts)/i", $v)) {
$list[] = $v;
if (is_dir($v)) {
$list = dir_list($v, $exts, $list);
}
}
}
return $list;
}
?>

使用方法:
 

代码如下:
<?php
$r = dir_list('dir');
printf("<p>输出数据为:</p><pre>%s</pre>\n", var_export($r , true));
?>

#-------------------
PHP函数-用来列出目录下所有文件

采用PHP编写的函数,用来列出指定目录下的所有的文件。
函数后面带有一个使用的示例代码。
注意:如果页面是utf-8的,在window中文版本的系统中,读取中文的文件名的时候会出现乱码。
 

代码如下:
<?php
/* 函数 listDirTree( $dirName = null )
** 功能 列出目录下所有文件及子目录
** 参数 $dirName 目录名称
** 返回 目录结构数组 false为失败
*/
function listDirTree( $dirName = null )
{
if( empty( $dirName ) )
exit( "IBFileSystem: directory is empty." );
if( is_dir( $dirName ) )
{
if( $dh = opendir( $dirName ) )
{
$tree = array();
while( ( $file = readdir( $dh ) ) !== false )
{
if( $file != "." && $file != ".." )
{
$filePath = $dirName . "/" . $file;
if( is_dir( $filePath ) ) //为目录,递归
{
$tree[$file] = listDirTree( $filePath );
}
else //为文件,添加到当前数组
{
$tree[] = $file;
}
}
}
closedir( $dh );
}
else
{
exit( "IBFileSystem: can not open directory $dirName.");
}
//返回当前的$tree
return $tree;
}
else
{
exit( "IBFileSystem: $dirName is not a directory.");
}
}
$files = listDirTree(".");
//print_r($files);
$size = count(files);
//以下代码是创建一个本目录下文件的列表(带有链接地址)
echo '<ol>';
for( $i=0; $files[$i] != NULL; $i++ ) {
echo '<li><a href="'.($files[$i]).'" target="_blank">'.$files[$i].'</a></li>';
}
echo '</ol>';
?>

    
[2]php取得文件的后缀名的方法
    来源: 互联网  发布时间: 2013-12-24

一种方法是使用数组,先把文件名切割成数组,然后想办法取得数组最后一个元素。
第二种种方法是通过字符串的处理来完成。
还有一种方法是用pathinfo()函数。

下面我们来看代码。

代码如下:

<?php
$pic = 'abc.3434.342.12123.123.exe';
$pics = explode()('.' , $pic);

/*得到数组总数,然后取最后一个*/
echo $num = count($pics);
echo '<br>'.$pics[$num-1];

/*遍历数组,取得最后一个元素*/
foreach ($pics as $value) //2
{
$a = $value;
}
echo $a.'<br>';
/*直接输出数组最后一个元素*/
echo end($pics);
echo '<br>';
/*单出数组最后一个元素,注意和end()的区别*/
//echo array_pop($pics);
/*先按照键值倒序排列这个数组,然后单出第一个元素*/
krsort($pics);
echo array_shift($pics);
echo '<br>';

/*pathinfo()函数返回值的extension索引对应的值*/
$res = pathinfo($pic); //5
var_dump($res);
echo $res['extension'].'<br>';

/*字符串截取,取最后三位即可*/
echo substr($pic , -3 , 3);
?>


    
[3]如何解析百度搜索结果link?url=参数
    来源: 互联网  发布时间: 2013-12-24

百度搜索结果的网址改变了,变成link?url=………这样的重定向格式了。

网上大概给出了如下的方法:
1、加密方式根据:随机+输入停留时间+快照地址进行加密
2、整个代码中应该有三个部分:1、搜索词的时间;2、搜索的关键词;3、随机生成的唯一性标识代码。
3、在任何环境或浏览器下 url=最后有一段相似的代码
从以上别人研究的结果可以知道,“最后有一段相似的代码”是比较可用的,于是先从此入手。
我搜索“enenba” 发现,我的第一个搜索结果的URL都有一段代码是相同的,那就是
http://www.baidu.com/link?url=…………ebac5573358cc3c0659257bfcf54763ec1c5ecff3b3fbd1d4c
所有搜索结果都有的一段代码 ebac5573358cc3c0659257bfcf54 (搜索N次后发现)
后面结尾的 763ec1c5ecff3b3fbd1d4c 看起来像是搜索结果的真实URL。(已经验证是真实URL的密文)
我是这样验证的:
1、先百度搜索 www.php100.com
第一个结果链接:
http://www.baidu.com/link?url=…………ebac5573358cc3c0659257bfcf546427d385fef6656de2404d6843da27
看到前面的几位6427d385fef6656de2404d6843da27
2、 再百度搜索 www.hao123.com
第一个结果链接:
http://www.baidu.com/link?url=…………ebac5573358cc3c0659257bfcf54 6427d385e6ff7a6de0434d6843da
看到前面的几位6427d385e6ff7a6de0434d6843da
……
多次搜索N个网站后发现,域名前几位是“www.”的,密文是都是6427d385
并且www.是四个字符,密文6427d385是八个字符。可以知道密文两个字符等于url一个字符。
于是写了一个php表单查询并得到密文部分,方便以后查看。
出个php源码:
 

代码如下:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>查询百度link?ulr=真实链接表单</title>
</head>
<body>
<?php
/*
getrealurl 获取301、302重定向后的URL地址 by enenba.com
@param str $url 查询
$return str 定向后的url的真实url
*/
function getrealurl(/blog_article/$url/index.html){
$header = get_headers($url,1);
if (strpos($header[0],'301') || strpos($header[0],'302')) {
if(is_array($header['Location'])) {
return $header['Location'][count($header['Location'])-1];
}else{
return $header['Location'];
}
}else {
return $url;
}
}
$input = '<form method="get" action=""><input type="text" name="url" id="url" /><input type="submit" value="提交" /></form><body></html>';
$url = isset()($_GET['url'])?$_GET['url']:'';
if(empty($url)) exit($input);
$urlreal = getrealurl(/blog_article/$url/index.html);
echo '真实的url为:'.$urlreal;
$urlreal = ltrim($urlreal,'http://');
$search = '/ebac5573358cc3c0659257bfcf54([0-9a-f]+)/i';
preg_match($search,$url,$r);
$url_encode = $r[1]; unset($r);
echo '<br/>密文部分为:'.$url_encode.'<br/>';
$urlreal_arr = str_split($urlreal);
$url_encode_arr = str_split($url_encode,2);
echo '<br />';
echo $input;
?>
 

声明:cnbeta上的文章不是我发布的。我解析只是根据自己的想法进行研究的,只是求个过程,至于有没有结果,我自有定论,大家别喷了。
仔细看了下百度结果url的长段代码,发现密文中只有数字和a到f字母组成,也就是十六进制的代码。
十六进制是从 0->1->2->3->4->5->7->8->9->a->b->c->d->e->f
我采集一系列的url并统计了第一位的代码。
ebac5573358cc3c0659257bfcf54XX......
XX这一位代码对应的url是这样的
33 0 23 @ 13 P 03 ` 73 p 63
! 32 1 22 A 12 Q 02 a 72 q 62
" 31 2 21 B 11 R 01 b 71 r 61
# 30 3 20 C 10 S 00 c 70 s 60
$ 37 4 27 D 17 T 07 d 77 t 67
% 36 5 26 E 16 U 06 e 76 u 66
& 35 6 25 F 15 V 05 f 75 v 65
' 34 7 24 G 14 W 04 g 74 w 64
( 3b 8 2b H 1b X 0b h 7b x 6b
) 3a 9 2a I 1a Y 0a i 7a y 6a
* 39 : 29 J 19 Z 09 j 79 z 69
+ 38 ; 28 K 18 [ 08 k 78 { 68
, 3f < 2f L 1f \ 0f l 7f | 6f
- 3e = 2e M 1e ] 0e m 7e } 6e
. 3d > 2d N 1d ^ 0d n 7d ~ 6d
/ 3c ? 2c O 1c _ 0c o 7c 6c

发现应该是一个ascii码表中的字符,但是顺序应该是混淆了。但是都是这个一个进制内都是这样:
3->2->1->0->7->6->5->4->b->a->9->8->f->e->d->c
四位一个降序,看出总体是递减的。
但是不解的是 从_ 到 `在ascii是相邻的 对应的 0c 和 73 是跳跃的。没办法,看不出规律,再看看第二位的这组代码
ebac5573358cc3c0659257bfcf54XXYY。。。。
YY这一位代码对应的url是这样的
70 0 60 @ 50 P 40 ` 30 p 20
! 71 1 61 A 51 Q 41 a 31 q 21
" 72 2 62 B 52 R 42 b 32 r 22
# 73 3 63 C 53 S 43 c 33 s 23
$ 74 4 64 D 54 T 44 d 34 t 24
% 75 5 65 E 55 U 45 e 35 u 25
& 76 6 66 F 56 V 46 f 36 v 26
' 77 7 67 G 57 W 47 g 37 w 27
( 78 8 68 H 58 X 48 h 38 x 28
) 79 9 69 I 59 Y 49 i 39 y 29
* 7a : 6a J 5a Z 4a j 3a z 2a
+ 7b ; 6b K 5b [ 4b k 3b { 2b
, 7c < 6c L 5c \ 4c l 3c | 2c
- 7d = 6d M 5d ] 4d m 3d } 2d
. 7e > 6e N 5e ^ 4e n 3e ~ 2e
/ 7f ? 6f O 5f _ 4f o 3f 2f

第二位的这一组的秘文很好的遵循 十六进制递增的顺序。
0->1->2->3->4->5->7->8->9->a->b->c->d->e->f
总体是递减的。
再看第三组
ebac5573358cc3c0659257bfcf54XXYYZZ。。。。
ZZ这一位代码对应的url是这样的
84 0 94 @ a4 P b4 ` c4 p d4
! 85 1 95 A a5 Q b5 a c5 q d5
" 86 2 96 B a6 R b6 b c6 r d6
# 87 3 97 C a7 S b7 c c7 s d7
$ 80 4 90 D a0 T b0 d c0 t d0
% 81 5 91 E a1 U b1 e c1 u d1
& 82 6 92 F a2 V b2 f c2 v d2
' 83 7 93 G a3 W b3 g c3 w d3
( 8c 8 9c H ac X bc h cc x dc
) 8b 9 9b I ab Y bb i cd y dd
* 8e : 9e J ae Z be j ce z de
+ 8f ; 9f K af [ bf k cf { df
, 88 < 98 L a8 \ b8 l c8 | d8
- 89 = 99 M a9 ] b9 m c9 } d9
. 8a > 9a N aa ^ ba n ca ~ da
/ 8b ? 9b O ab _ bb o cb db

不解释了上顺序:
4->5->6->7->0->1->2->3->4->c->b->e->f->8->9->a->b
总体是递增的
还没看后面的位数,不过大概可以知道是 四位为一组的混淆十六进制混淆,至于是递增还是递减,需要一定的数据量来判断。
下次采集1000条url数据进行判断。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3