PHP错误管理函数_php实例_脚本之家

代码很简洁,也很简单,就不多废话了。

//获得当前的脚本网址 复制代码
代码如下:functionget_php_url(){
if(!empty($_server[“REQUEST_URI”])){
$scriptName=$_SERVER[“REQUEST_URI”]; $nowurl=$scriptName; }else{
$scriptName=$_SERVER[“PHP_SELF”];
if(empty($_SERVER[“QUERY_STRING”]))$nowurl=$scriptName;
else$nowurl=$scriptName.”?”.$_SERVER[“QUERY_STRING”]; }
return$nowurl; }//把全角数字转为半角数字 复制代码 代码如下:functionGetAlabNum{
$nums=array(“0”,”1”,”2”,”3”,”4”,”5”,”6”,”7”,”8”,”9”);
$fnums=”0123456789″;
for$fnum=str_replace($nums[$i],$fnums[$i],$fnum);
$fnum=ereg_replace(“[^0-9\澳门威尼斯人登录,.]|^0{1,}”,””,$fnum); if$fnum=0;
return$fnum; }//去除HTML标记 复制代码
代码如下:functionText2Html{ $txt=str_replace; $txt=str_replace;
$txt=str_replace; $txt=preg_replace(“/[\r\n]{1,}/isU”,”
\r\n”,$txt); return$txt; }//清除HTML标记复制代码 代码如下:functionClearHtml{
$str=str_replace; $str=str_replace; return$str;
}//相对路径转化成绝对路径 复制代码
代码如下:functionrelative_to_absolute{
preg_match:\/\//’,$feed_url,$protocol);
$server_url=preg_replace(“/:\/\//”,””,$feed_url);
$server_url=preg_replace(“/\/.*/”,””,$server_url); if{
return$content; } if{
$new_content=preg_replace(‘/href=”\//’,’href=”‘.$protocol[0].$server_url.’/’,$content);
$new_content=preg_replace(‘/src=”\//’,’src=”‘.$protocol[0].$server_威尼斯人注册,url.’/’,$new_content);
}else{ $new_content=$content; } return$new_content; }//取得所有链接
复制代码 代码如下:functionget_all_url{
preg_match_all(‘/]*>/i’,$code,$arr);
returnarray(‘name’=>$arr[2],’url’=>$arr[1]);
}//HTML表格的每行转为CSV格式数组复制代码
代码如下:functionget_tr_array{ $table=preg_replace(“‘

临近下班了,大约还有20分钟左右,手头没事,给大家分享几个函数。超级好用哟!

//寄出电子邮件到指定的邮件地址to,subject表示主题,message为信件内容。额外的选项additional_headers可省略,表示其他邮件文档首部
boolmail(stringto,stringsubject,stringmessage,string[additional——headers]
//将URL字符串予以解析,并将结果返回数组中。返回的数组包括下列元素:scheme、host、port、path、query与fragment等
arrayparse_url
//将字符串以URL编码,例如空格就会变成加号。网页中表单数据传送就是用urlencode编码后再送出
stringurlencode //将URL编码后字符串还原 stringurldecode
//可打开FTP服务器的链接。参数host为FTP服务器的网址。参数port通常省略,若FTP服务器的端口号不是21时才需要加本参数。若无错误则返回连接代码,失败则返回false
intftp_connect
//可登入链接的FTP服务器。参数ftp_stream和password为FTP服务器的使用者帐号及密码,通常anonymous为公开的使用帐号,密码则为某个电子邮件地址。成功则返回true
boolftp_login(intftp_stream,stringusername,stringpassword)
//用来取得目前在FTP服务器中的路径。参数ftp_stream为FTP的连接代码。若有错误则返回NULL
stringftp_pwd
//用来回到上层目录,也就是目前目录的父目录。参数ftp_stream为FTP连接代码。成功则返回true
booleanftp_cdup
//用来前往下一层目录。参数ftp_stream为FTP的连接代码。参数directory为欲前往的目录。成功返回true,失败则返回false
boolftp_chdir(intftp_stream,stringdirectory)
//返回给定目录的文件名或数组
arrayftp_nlist(intftp_stream,stringdirectory)
//按输出行数组的方式返回某个目录的详细清单
arrayftp_rawlist(intftp_stream,stringdirectory)
//可显示远端FTP服务器的系统,也就是等于对FTP服务器下system或syst指令。成功则返回字符串,如“215UNIXType:L8”,失败则返回false
stringftp_systype
//用来下载指定的文件。参数ftp_stream为FTP的连接代码;参数local_file为欲存在本地端的文件名;参数remote_file为欲下载的文件名;参数mode的值有FTP_ASCII及FTP_BINARY二种,分别表示文本文件或者是二进制文件,成功则返回true,失败则返回false
boolftp_get(intftp_stream,stringlocal_file,stringremote_file,intmode)
//下载文件,并存在已打开的本地文件中。参数fp为本地端的已打开文件的文件指针
boolftp_fget(intftp_stream,intfp,stringremote_file,intmode)
//用来上传指定的文件。参数ftp_stream为FTP的连接代码;参数remote_file为欲存在远端的文件名;参数local_file为欲上传的文件名;参数mode的值有FTP_ASCII及FTP_BINARY二种
boolftp_put(intftp_stream,stringremote_file,stringlocal_file,intmode)
//向FTP主机发送cmd命令,该命令不是标准化,而是与服务器的主机操作系统有关,可用于文件的访问许可、组成员的操作
boolftp_site(resourceftp_stream,stringcmd) //关闭FTP连接 boolftp_quit
//可传回某个IP网址的主机域名。若执行失败,则传回原来的IP网址
stringgethostbyaddr
//可传回某个网络主机的IP网址。若执行失败,则传回原来的计算机域名hostname
stringgethostbyname //返回给定主机的IP地址列表 arraygethostbynamel
//检查给定的因特网主机名或IP地址是否存在DNS记录,type可以是A、MX、NS、SOA、TPR、CNAME或ANY,默认类型为MX
intcheckdnsrr(stringhost[,stringtype])
//获得相应于给定因特网主机名的MX记录 12下一页阅读全文

在 PHP
中,默认的错误处理很简单。一条错误消息会被发送到浏览器,这条消息带有文件名、行号以及描述错误的消息。

复制代码 代码如下:/** * 去除多余的0
*/ function del0 { $s = trim; if (preg_match(‘#^-?\d+?\.0+$#’,
$s)) { return preg_replace\.0+$#’,’$1′,$s); } if
(preg_match(‘#^-?\d+?\.[0-9]+?0+$#’, $s)) { return
preg_replace(‘#^(-?\d+\.[0-9]+?)0+$#’,’$1′,$s); } return $s; }

]*?>’si”,'”‘,$table); $table=str_replace;
$table=str_replace(“”,”{tr}”,$table); functionget_tr_array{
$table=preg_replace(“‘

截取字符串函数

PHP 错误处理

小伙伴们自由扩展下,可以做很多事情,希望大家能够喜欢。

]*?>’si”,'”‘,$table); $table=str_replace;
$table=str_replace(“”,”{tr}”,$table); //去掉HTML标记
$table=preg_replace(“‘]*?>’si”,””,$table);//去掉空白字符
$table=preg_replace[\s]+'”,””,$table); $table=str_replace;
$table=str_replace; $table=explode; array_pop; return$table; }
//将HTML表格的每行每列转为数组,采集表格数据 复制代码 代码如下:functionget_td_array{
$table=preg_replace(“‘

/** * @param string $begin 开始字符串 * @param string $end 结束字符串 * @param string $str 需要截取的字符串 * @return string */ function get_str{ $b = mb_strpos + mb_strlen; $e = mb_strpos - $b; return mb_substr; }

在创建脚本和 Web
应用程序时,错误处理是一个重要的部分。如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门。

]*?>’si”,””,$table); $table=preg_replace(“‘

这是一个非常好用的截取字符串的函数,入过是html代码,请先用strip_tags()函数将代码转为字符串!

本教程介绍了 PHP 中一些最为重要的错误检测方法。

]*?>’si”,””,$table); $table=preg_replace(“‘

Curl封装函数

我们将为您讲解不同的错误处理方法:

]*?>’si”,””,$table); $table=str_replace(“

function curlGet { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); return curl_exec; }

简单的 “die()” 语句

“,”{tr}”,$table); $table=str_replace(“”,”{td}”,$table); //去掉HTML标记
$table=preg_replace(“‘]*?>’si”,””,$table); //去掉空白字符
$table=preg_replace[\s]+'”,””,$table); $table=str_replace;
$table=str_replace; $table=explode; array_pop; foreach{ $td=explode;
array_pop; $td_array[]=$td; } return$td_array;
}//返回字符串中的所有单词$distinct=true去除重复 复制代码 代码如下:functionsplit_en_str{
preg_match_all/’,$str,$match); if{ $match[1]=array_unique; } sort;
return$match[1]; }

写过Curl的都知道,总是要写一大堆才能使用,现在博主也给你封装好了,拿去用吧,参数应该猪也知道,所以不再标注!

自定义错误和错误触发器

分类树函数,可用于分类,和留言板等等之类的层级关系

基本的错误处理:使用 die() 函数

/** * 定义分类树函数 * @param items 需要分类的二维数组 * @param $id 主键 * @param $belong_id 关联主键的PID * @son 可以自定义往里面插入就行 */ function catagory($items,$id='id',$belong_id='belong_id',$son = 'children'){ $tree = array(); //格式化的树 $tmpMap = array(); //临时扁平数据 foreach  { $tmpMap[$item[$id]] = $item; } foreach  { if (isset($tmpMap[$item[$belong_id]])) { $tmpMap[$item[$belong_id]][$son][] = &$tmpMap[$item[$id]]; } else { $tree[] = &$tmpMap[$item[$id]]; } } unset; return $tree; }

第一个实例展示了一个打开文本文件的简单脚本:

好的~博主下班踢球去了~

如果文件不存在,您会得到类似这样的错误:

bye,see you!

Warning: fopen [function.fopen]: failed to open stream:No such file or
directory in C:webfoldertest.php on line 2

为了避免用户得到类似上面的错误消息,我们在访问文件之前检测该文件是否存在:

现在,如果文件不存在,您会得到类似这样的错误消息:

File not found

相比之前的代码,上面的代码更有效,这是由于它采用了一个简单的错误处理机制在错误之后终止了脚本。

然而,简单地终止脚本并不总是恰当的方式。让我们研究一下用于处理错误的备选的
PHP 函数。

创建自定义错误处理器

创建一个自定义的错误处理器非常简单。我们很简单地创建了一个专用函数,可以在
PHP 中发生错误时调用该函数。

该函数必须有能力处理至少两个参数 (error level 和 error
message),但是可以接受最多五个参数(可选的:file, line-number 和 error
context):

语法

error_function(error_level,error_message,error_file,error_line,error_context)

参数

描述

error_level
必需。为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。
error_message 必需。为用户定义的错误规定错误消息。 error_file
可选。规定错误发生的文件名。 error_line 可选。规定错误发生的行号。
error_context
可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

错误报告级别

这些错误报告级别是用户自定义的错误处理程序处理的不同类型的错误:

现在,让我们创建一个处理错误的函数:

function customError{echo "Error: [$errno] $errstr
";echo "Ending Script";die();}

上面的代码是一个简单的错误处理函数。当它被触发时,它会取得错误级别和错误消息。然后它会输出错误级别和消息,并终止脚本。

现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。

常量

描述

2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。 8 E_NOTICE
run-time
通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。 256
E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数
trigger_error() 设置的 E_ERROR。 512 E_USER_WARNING
非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error()
设置的 E_WARNING。 1024 E_USER_NOTICE
用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的
E_NOTICE。 4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似
E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler 8191
E_ALL 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

设置错误处理程序

PHP
的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。

可以修改错误处理程序,使其仅应用到某些错误,这样脚本就能以不同的方式来处理不同的错误。然而,在本例中,我们打算针对所有错误来使用我们自定义的错误处理程序:

set_error_handler;

由于我们希望我们的自定义函数能处理所有错误,set_error_handler()
仅需要一个参数,可以添加第二个参数来规定错误级别。

通过尝试输出不存在的变量,来测试这个错误处理程序:

Error: [$errno] $errstr";}//set error handlerset_error_handler;//trigger errorecho;?>

以上代码的输出如下所示:

Error: [8] Undefined variable: test

触发错误

在脚本中用户输入数据的位置,当用户的输入无效时触发错误是很有用的。在 PHP
中,这个任务由 trigger_error() 函数完成。

实例

在本例中,如果 “test” 变量大于 “1”,就会发生错误:

以上代码的输出如下所示:

Notice: Value must be 1 or belowin C:webfoldertest.php on line 6

您可以在脚本中任何位置触发错误,通过添加的第二个参数,您能够规定所触发的错误级别。

可能的错误类型:

E_USER_ERROR – 致命的用户生成的 run-time
错误。错误无法恢复。脚本执行被中断。E_USER_WARNING –
非致命的用户生成的 run-time 警告。脚本执行不被中断。E_USER_NOTICE –
默认。用户生成的 run-time
通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。

在本例中,如果 “test” 变量大于 “1”,则发生 E_USER_WARNING
错误。如果发生了
E_USER_WARNING,我们将使用我们自定义的错误处理程序并结束脚本:

Error: [$errno] $errstr
";echo "Ending Script";die();}//set error handlerset_error_handler("customError",E_USER_WARNING);//trigger error$test=2;if {trigger_error("Value must be 1 or below",E_USER_WARNING);}?>

以上代码的输出如下所示:

Error: [512] Value must be 1 or belowEnding Script

现在,我们已经学习了如何创建自己的
error,以及如何触发它们,接下来我们研究一下错误记录。

错误记录

在默认的情况下,根据在 php.ini 中的 error_log 配置,PHP
向服务器的记录系统或文件发送错误记录。通过使用 error_log()
函数,您可以向指定的文件或远程目的地发送错误记录。

通过电子邮件向您自己发送错误消息,是一种获得指定错误的通知的好办法。

通过 E-Mail 发送错误消息

在下面的例子中,如果特定的错误发生,我们将发送带有错误消息的电子邮件,并结束脚本:

Error: [$errno] $errstr
";echo "Webmaster has been notified";error_log("Error: [$errno] $errstr",1,"someone@example.com","From: webmaster@example.com");}//set error handlerset_error_handler("customError",E_USER_WARNING);//trigger error$test=2;if {trigger_error("Value must be 1 or below",E_USER_WARNING);}?>

以上代码的输出如下所示:

Error: [512] Value must be 1 or belowWebmaster has been notified

接收自以上代码的邮件如下所示:

Error: [512] Value must be 1 or below

这个方法不适合所有的错误。常规错误应当通过使用默认的 PHP
记录系统在服务器上进行记录。

以上内容是小编给大家介绍的PHP错误处理函数,希望对大家以上帮助!

相关文章