PHP中extract函数各种用法介绍

 更新时间:2016年11月25日 15:49  点击:1434
本文章详细的介绍了关于PHP中extract函数各种用法介绍,从把数据变成变量,post,get数据处理等有需要的同学可参考一下。

直接上代码:

 代码如下 复制代码
<?php
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "$a = $a; $b = $b; $c = $c";
?>

猜猜会会出现什么结果?

输出:

 代码如下 复制代码
$a = Cat; $b = Dog; $c = Horse

没有定义变量$a $b $c ,也没有赋值,为什么就可以可以获取值了?


比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不能不用一一赋值,直接使用下面代码:

form.html

 代码如下 复制代码

 <form action="action.php" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">

在action.php中只要使用extract()函数将$_POST全局数据解开:
action.php

 代码如下 复制代码

 <?php
extract($_POST);
//相当于$username = $_POST['username'];
//$password = $_POST['password'];
?>


数组操作


相关例子:

 代码如下 复制代码

<?php

/* 假定 $var_array 是 wddx_deserialize 返回的数组*/

$size = "large";
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_sizen";

?>


上例将输出:

blue, large, sphere, medium
$size 没有被覆盖,因为指定了 EXTR_PREFIX_SAME,这使得 $wddx_size 被建立。如果指定了 EXTR_SKIP,则 $wddx_size 也不会被建立。EXTR_OVERWRITE 将使 $size 的值为“medium”,EXTR_PREFIX_ALL 将建立新变量 $wddx_color,$wddx_size 和 $wddx_shape。


数组2


.适用范围:非数字索引的数组,数组中有键值对;
2.函数创建的变量名是数组中的关键字,变量的值是数组中对应的值;
3.两个可选参数:extract_type和prefix;
    其中extract_type指定处理变量名冲突的方法,默认是EXTR_OVERWRITE,表示覆盖已有的变量,
    当extract_type的值为EXTR_PREFIX_ALL时,给所有创建的变量前加上前缀,前缀为prefix参数提供;
4.数组中元素的关键字必须是有效的变量名,否则将被跳过。
   
实例:

array_extract.php:

 代码如下 复制代码

<html>
    <head>
        <title>Test Array Extract</title>
    </head>
    <body>
        <?php
            $array = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3');
            extract($array);
            echo 'Default:<br />';
            echo "$key1 $key2 $key3<br />";
           
            //发生冲突时跳过一个元素
            $key1 = "abc";
            extract($array, EXTR_SKIP);
            echo 'Skip:<br />';
            echo "$key1 $key2 $key3<br />";

            //在所有变量名前加上由prefix参数提供的值
            extract($array, EXTR_PREFIX_ALL, 'my');
            echo 'Prefix_All:<br />';
            echo "$my_key1 $my_key2 $my_key3<br />";
        ?>
    </body>
</html>


是不是很方便呢?
关于此函数用介绍可参考http://www.111cn.net/phper/24/04ef3db43c8278b93cdd9203999b8352.htm

在写程序的过程中经常会用到$_SERVER函数,有时候对变量不太了解就会造成很大的误解。今天偶找了几个小例子来说明一下常用到的四个变量的用法~~

$_SERVER存储当前服务器信息,其中有几个值如

 代码如下 复制代码

$_SERVER["QUERY_STRING"],

$_SERVER["REQUEST_URI"],

$_SERVER["SCRIPT_NAME"],

$_SERVER["PHP_SELF"]

常常容易混淆,以下通过实例详解$_SERVER函数中QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF变量区别,掌握这四者之间的关系,便于在实际应用中正确获取所需要的值,供参考。

1,$_SERVER["QUERY_STRING"]

说明:查询(query)的字符串

2,$_SERVER["REQUEST_URI"]

说明:访问此页面所需的URI

3,$_SERVER["SCRIPT_NAME"]

说明:包含当前脚本的路径

4,$_SERVER["PHP_SELF"]

说明:当前正在执行脚本的文件名

实例:

1,http://ask.mbatrip.com (打开主页)

结果:

 代码如下 复制代码

$_SERVER["QUERY_STRING"] = “”

$_SERVER["REQUEST_URI"] = “/”

$_SERVER["SCRIPT_NAME"] = “/index.php”

$_SERVER["PHP_SELF"] = “/index.php”

2,http://ask.mbatrip.com/?tags/上传(附带查询)

结果:

 代码如下 复制代码

$_SERVER["QUERY_STRING"] = “tags/上传″

$_SERVER["REQUEST_URI"] = “/?tags/上传″

$_SERVER["SCRIPT_NAME"] = “/index.php”

$_SERVER["PHP_SELF"] = “/index.php”

3,http://ask.mbatrip.com/?tags/上传/2

结果:

$_SERVER["QUERY_STRING"] = “tags/上传/2”

$_SERVER["REQUEST_URI"] = “/index.php?tags/上传/2”

$_SERVER["SCRIPT_NAME"] = “/index.php”

$_SERVER["PHP_SELF"] = “/index.php”

$_SERVER["QUERY_STRING"]获取查询语句,实例中可知,获取的是?后面的值

$_SERVER["REQUEST_URI"] 获取http://www.111cn.net后面的值,包括/

$_SERVER["SCRIPT_NAME"] 获取当前脚本的路径,如:index.php

$_SERVER["PHP_SELF"] 当前正在执行脚本的文件名

总结一下,

对于QUERY_STRING,REQUEST_URI,SCRIPT_NAME 和PHP_SELF,深入了解将有利于我们在$_SERVER函数中正确调用这四个值。通过实例详解$_SERVER函数中 QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF掌握四个变量之间的区别。

文章介绍了利用php自身来运行计划任务同时还介绍了在winows下利用winodows计划任务来操作,还有在linux中利用linux的方法来实现。

使用php让浏览器刷新需要解决几个问题
1.PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
2.如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
3.如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行

 代码如下 复制代码

<?php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.

set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去

$interval=5;// 每隔5s运行

 

//方法1--死循环

do{

echo '测试'.time().'<br/>'; 

sleep($interval);// 等待5s 

}while(true);

 

//方法2---sleep 定时执行

require_once './curlClass.php';//引入文件

 

$curl = new httpCurl();//实例化

$stime = $curl->getmicrotime();

for($i=0;$i<=10;$i++){

 

echo '测试'.time().'<br/>'; 

sleep($interval);// 等待5s

 

}

ob_flush();

flush();

$etime = $curl->getmicrotime();

echo '<hr>';

echo round(($etime-stime),4);//程序执行时间

WINDOWS中设置计划任务执行PHP文件

在网上找了些WINDOWS执行PHP的计划任务的方法,有一个写得很全,可惜在我这竟然没通过。最后不得不综合各门派的方法,才能在我这运行成功。

1、写一个PHP程序,命名为test.php,内容如下所示:

 

 代码如下 复制代码

<?

$fp = fopen("test.txt", "a+");

 fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!n");

 fclose($fp);

?>

程序大胆地写,什么includerequire尽管用,都没问题
2、新建Bat文件,命名为test.bat,内容如下所示:

 代码如下 复制代码
1 D:phpphp.exe -q D:websitetest.php


//相应目录自己改上

3、建立WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的bat文件
设置时间和密码(登陆WINDOWS的)
保存即可了。
4、over! 可以右键计划任务点“运行”试试

Linux的Crontab执行PHP脚本

一、在Crontab中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:

 代码如下 复制代码

# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php

/usr/local/bin/php为PHP程序的路径。

二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。

 代码如下 复制代码
00 * * * * lynx -dump http://www.centos.bz/myscript.php

下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。

 代码如下 复制代码
*/5 * * * * /usr/bin/curl -o temp.txt http://www.centos.bz/myscript.php

下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件。

 代码如下 复制代码
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.centos.bz/myscript.php

 

php定时计划任务介绍2010-05-06 10:10以前对se特别感兴趣,但是自己又不会java,lucene等搜索引擎开发工具,于是不断挖掘php的功效。

最后发现php也可以做抓取,并且原理很易:直接获取页面源文件,然后通过正则或字符串的参照截取来获取需要的信息。但是性能上不能和搜索引擎的多线程抓取相比。

实现了上一步之后,又思考着,如果抓取可以自动定时获取,那么人工运行可执行页面也就省下来了。

后来也在一些php开源程序中了解到关于"计划任务"的效果:可以定时运行某程序,比如数据库备份,更新缓存,生成静态页面,生成网站地图等。

最近由于项目需要定时更新远程数据库到本地,网上搜了搜,还真找到了。

ignore_user_abort();函数搭配set_time_limit(0);和sleep($interval);即可实现以上自动更新。

先给出一个基本的范式,其中有个人的测试程序:

 代码如下 复制代码

<?php
ignore_user_abort(); // run script in background
set_time_limit(0); // run script forever
$interval=30; // do every 15 minutes...
do{
$fp = fopen('text3.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval); // wait 15 minutes
}while(true);
?>

首先运行该程序,然后关闭该页面,程序仍然运行中,test会每隔30秒的填补到text3.txt文件。

个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧,比较那才是王道

一款基于原生态的php +js +ajax 的分页程序实例,我们详细的从数据库创建到js,php,html页面的创建来告诉你如何实现ajax分页调用数据的方法。
 代码如下 复制代码

CREATE TABLE `tb_user` (
  `id` int(10) NOT NULL auto_increment,
  `username` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;


INSERT INTO `tb_user` VALUES (1, 'aaa');
INSERT INTO `tb_user` VALUES (2, 'bbb');
INSERT INTO `tb_user` VALUES (3, 'ccc');
INSERT INTO `tb_user` VALUES (4, 'ddd');
INSERT INTO `tb_user` VALUES (5, 'eee');
INSERT INTO `tb_user` VALUES (6, 'fff');
INSERT INTO `tb_user` VALUES (7, 'ggg');
INSERT INTO `tb_user` VALUES (8, 'hhh');
INSERT INTO `tb_user` VALUES (9, '����');

ajaxpage.js ~ 1KB

 

 代码如下 复制代码
var http_request=false;
  function send_request(url){//初始化,指定处理函数,发送请求的函数
    http_request=false;
    //开始初始化XMLHttpRequest对象
    if(window.XMLHttpRequest){//Mozilla浏览器
     http_request=new XMLHttpRequest();
     if(http_request.overrideMimeType){//设置MIME类别
       http_request.overrideMimeType("text/xml");
     }
    }
    else if(window.ActiveXObject){//IE浏览器
     try{
      http_request=new ActiveXObject("Msxml2.XMLHttp");
     }catch(e){
      try{
      http_request=new ActiveXobject("Microsoft.XMLHttp");
      }catch(e){}
     }
    }
    if(!http_request){//异常,创建对象实例失败
     window.alert("创建XMLHttp对象失败!");
     return false;
    }
    http_request.onreadystatechange=processrequest;
    //确定发送请求方式,URL,及是否同步执行下段代码
    http_request.open("GET",url,true);
    http_request.send(null);
  }
  //处理返回信息的函数
  function processrequest(){
   if(http_request.readyState==4){//判断对象状态
     if(http_request.status==200){//信息已成功返回,开始处理信息
      document.getElementById(reobj).innerHTML=http_request.responseText;
     }
     else{//页面不正常
      alert("您所请求的页面不正常!");
     }
   }
  }
  function dopage(obj,url){
   document.getElementById(obj).innerHTML="正在读取数据...";
   reobj = obj;
   send_request(url);
   }

php调用代码

 代码如下 复制代码

<title>PHP+ajax分页演示</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script language="javascript" src="ajaxpage.js"></script>

<div id="result">
<?php
$terry=mysql_connect("localhost","root","")or die("连接数据库失败:".mysql_error());
mysql_select_db("ajaxtest",$terry);
mysql_query("set NAMES 'utf8'");
$result=mysql_query("select * from tb_user");

$total=mysql_num_rows($result) or die(mysql_error());

$page=isset($_GET['page'])?intval($_GET['page']):1;
$page_size=3;
$url='index.php';

$pagenum=ceil($total/$page_size);
$page=min($pagenum,$page);
$prepage=$page-1;
$nextpage=($page==$pagenum?0:$page+1);
$pageset=($page-1)*$page_size;
$pagenav='';
$pagenav.="显示第<font color='red'>".($total?($pageset+1):0)."-".min($pageset+5,$total)."</font>记录&nbsp;共<b><font color='yellow'>".$total."</font></b>条记录&nbsp;现在是第&nbsp;<b><font color='blue'>".$page."</font></b>&nbsp;页&nbsp;";
if($page<=1)
$pagenav.="<a style=cursor:not-allowed;>首页</a>&nbsp;";
else
$pagenav.="<a onclick=javascript:dopage('result','$url?page=1') style=cursor:pointer;>首页</a>&nbsp;";
if($prepage)
$pagenav.="<a onclick=javascript:dopage('result','$url?page=$prepage') style=cursor:pointer;>上一页</a>&nbsp;";
else
$pagenav.="<a style=cursor:not-allowed;>上一页</a>&nbsp;";
if($nextpage)
$pagenav.="<a onclick=javascript:dopage('result','$url?page=$nextpage') style=cursor:pointer;>下一页</a>&nbsp;";
else
$pagenav.="<a style=cursor:not-allowed;>下一页</a>&nbsp;";
if($pagenum)
$pagenav.="<a onclick=javascript:dopage('result','$url?page=$pagenum') style=cursor:pointer;>尾页</a>&nbsp;";
else
$pagenav.="<a style=cursor:not-allowed;>尾页</a>&nbsp;";
$pagenav.="共".$pagenum."页";

if($page>$pagenum){
    echo "error:没有此页".$page;
    exit();
}
?>
<table align="center" border="2" width="300">
  <tr bgcolor="#cccccc" align="center">
    <td>用户名</td>
    <td>用户密码</td>
  </tr>
<?php
$info=mysql_query("select * from tb_user order by id desc limit $pageset,$page_size");
while($array=mysql_fetch_array($info)){
?>
  <tr align="center">
    <td><?php echo $array['id'];?></td>
    <td><?php echo $array['username'];?></td>
  </tr>
<?php   
}
?>
</table>
<?php
echo "<p align=center>$pagenav</p>";
?>
</div>

大家使用时只在一段段代码按我个面的保存成单个文件就可以实现了哦。

本文章介绍一下关于在php中验证码程序的生成代码,调用方法及以如果验证用户输入的验证码程序没有问题。

create_code.php代码

 代码如下 复制代码
<?php
session_start();
//生成验证码图片
header("Content-type: image/png");
// 全数字
$str = "1,2,3,4,5,6,7,8,9,a,b,c,d,f,g";      //要显示的字符,可自己进行增删
$list = explode(",", $str);
$cmax = count($list) - 1;
$verifyCode = '';
for ( $i=0; $i < 5; $i++ ){
      $randnum = mt_rand(0, $cmax);
      $verifyCode .= $list[$randnum];           //取出字符,组合成为我们要的验证码字符
}
$_SESSION['code'] = $verifyCode;        //将字符放入SESSION中
 
$im = imagecreate(58,28);    //生成图片
$black = imagecolorallocate($im, 0,0,0);     //此条及以下三条为设置的颜色
$white = imagecolorallocate($im, 255,255,255);
$gray = imagecolorallocate($im, 200,200,200);
$red = imagecolorallocate($im, 255, 0, 0);
imagefill($im,0,0,$white);     //给图片填充颜色
 
//将验证码绘入图片
imagestring($im, 5, 10, 8, $verifyCode, $black);    //将验证码写入到图片中
 
for($i=0;$i<50;$i++)  //加入干扰象素
{
     imagesetpixel($im, rand()p , rand()0 , $black);    //加入点状干扰素
     imagesetpixel($im, rand()p , rand()0 , $red);
     imagesetpixel($im, rand()p , rand()0 , $gray);
     //imagearc($im, rand()p, rand()p, 20, 20, 75, 170, $black);    //加入弧线状干扰素
     //imageline($im, rand()p, rand()p, rand()p, rand()p, $red);    //加入线条状干扰素
}
imagepng($im);
imagedestroy($im);
?>

html代码

demo.html

 代码如下 复制代码

<!-- DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd" -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>

<body>
<form action="act.php" method="post">
<input type="text" name="code" />
<img id="code" src="create_code.php" alt="看不清楚,换一张" style="cursor: pointer; vertical-align:middle;" onClick="create_code()"/>
<!--<button type="button" onClick="create_code()">更换</button>-->
<button type="submit">提交</button>
</form>
<script>
function create_code(){
    document.getElementByIdx_x('code').src = 'create_code.php?'+Math.random()*10000;
}
</script>
</body>
</html>

//处理,判断是否输入正确
act.php

 代码如下 复制代码

<?php
session_start();

if($_POST['code'] == $_SESSION['code']){
    echo 'ok';
}else{
    echo 'no';
}
?>

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • java 画pdf用itext调整表格宽度、自定义各个列宽的方法

    这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • 图解Sublime Text3使用技巧

    通过本篇文章给大家介绍Sublime Text3使用技巧的相关知识,对sublime text3技巧相关知识感兴趣的朋友一起学习吧...2015-12-24
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21