php中preg_match_all函数用法详解

 更新时间:2016年11月25日 15:46  点击:1528
在php中preg_match_all函数的作用是进行全局正则表达式匹配了,下面我来给大家详细介绍preg_match_all函数用法与在win2003平台导致apache重启的解决办法。

int preg_match_all ( string pattern, string subject, array matches [, int flags])


在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。

搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。

flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义):

PREG_PATTERN_ORDER

对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。

 代码如下 复制代码

<?php
preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."/n";
print $out[1][0].", ".$out[1][1]."/n";
?>

本例将输出:

<b>example: </b>, this is a test example: , this is a test

因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串


对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。(即$matches[0] [0]为全部模式匹配中的每一项,$matches[0] [1]为全部模式匹配中的第二项,$matches[1] [0]为匹配每一个括号中的第一项,$matches[1] [0]为匹配每一个括号中的第二项)

 代码如下 复制代码

<?php

 
  preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",

 
  "<b>example: </b><div align=left>this is a test</div>",

 
  $out, PREG_PATTERN_ORDER);

 
  print $out[0][0].", ".$out[0][1]."n";

 
  print $out[1][0].", ".$out[1][1]."n";

 
  ?>

 


本例将输出:

 
  <b>example: </b>, <div align=left>this is a test</div>

 
  example: , this is a test

 
因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串。

 
如果使用PREG_SET_ORDER


对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。(即$matches[0] [0]为第一组匹配项中完整匹配的字符串,$matches[0] [1]为第一组匹配中完整匹配第一个括号中的字符串)

 代码如下 复制代码

<?php

 
  preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",

 
  "<b>example: </b><div align=left>this is a test</div>",

 
  $out, PREG_SET_ORDER);

 
  print $out[0][0].", ".$out[0][1]."n";

 
  print $out[1][0].", ".$out[1][1]."n";

 
  ?>

 


本例将输出:

 
  <b>example: </b>, example:

 
  <div align=left>this is a test</div>, this is a test

 
  本例中,$matches[0] 是第一组匹配结果,$matches[0][0] 包含匹配整个模式的文本,$matches[0][1] 包含匹配第一个子模式的文本,以此类推。同样,$matches[1] 是第二组匹配结果,等等。

 
PREG_OFFSET_CAPTURE

 
  如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。本标记自 PHP 4.3.0 起可用。

 
  如果没有给出标记,则假定为 PREG_PATTERN_ORDER。

 
  返回整个模式匹配的次数(可能为零),如果出错返回 FALSE。

 
例子 1. 从某文本中取得所有的电话号码

 代码如下 复制代码

 
  <?php

 
  preg_match_all ("/(? (d)? )? (?(1) [-s] ) d-d/x",

 
  "Call 555-1212 or 1-800-555-1212", $phones);

 
  ?>

例子 2. 搜索匹配的 HTML 标记(greedy)

 代码如下 复制代码

 
  <?php

 
  // \2 是一个逆向引用的例子,其在 PCRE 中的含义是

 
  // 必须匹配正则表达式本身中第二组括号内的内容,本例中

 
  // 就是 ([w]+)。因为字符串在双引号中,所以需要

 
  // 多加一个反斜线。

 
  $html = "<b>bold text</b><a href=howdy.html>click me</a>";

 
  preg_match_all ("/(<([w]+)[^>]*>)(.*)(</\2>)/", $html, $matches);

 
  for ($i=0; $i< count($matches[0]); $i++) {

 
  echo "matched: ".$matches[0][$i]."n";

 
  echo "part 1: ".$matches[1][$i]."n";

 
  echo "part 2: ".$matches[3][$i]."n";

 
  echo "part 3: ".$matches[4][$i]."nn";

 
  }

 
  ?>

本例将输出:

 
  matched: <b>bold text</b>

 
  part 1: <b>

 
  part 2: bold text

 
  part 3: </b>

 
  matched: <a href=howdy.html>click me</a>

 
  part 1: <a href=howdy.html>

 
  part 2: click me

 
part 3: </a>

例1. 在文本中搜索“php”

 代码如下 复制代码

    <?php

    // 模式定界符后面de “i” 表示不区分大小写字母de搜索

    if (preg_match (“/php/i”, “PHP is the web scripting language of choice.”)) {

    print “A match was found.”;

    } else {

    print “A match was not found.”;

    }

    ?>

    例2. 搜索单词“web”

 代码如下 复制代码

    <?php

    /* 模式中de b 表示单词de边界,因此只you独立de “web” 单词会被匹配,

    * 而不会匹配例如 “webbing” 或 “cobweb” 中de一部分 */

    if (preg_match (“/bwebb/i”, “PHP is the web scripting language of choice.”)) {

    print “A match was found.”;

    } else {

    print “A match was not found.”;

    }

    if (preg_match (“/bwebb/i”, “PHP is the website scripting language of choice.”)) {

    print “A match was found.”;

    } else {

    print “A match was not found.”;

    }

    ?>

    例3. 从 URL 中取出域名

 代码如下 复制代码

    <?php

    // 从 URL 中取得主机名

    preg_match(“/^(http://)?([^/]+)/i”,

    $host = $matches.;

    // 从主机名中取得后面两段

    preg_match(“/[^./]+.[^./]+$/”, $host, $matches);

    echo “domain name is: {$matches[0]}n”;

    ?>

    输出:

    domain name is: php.net


preg_match_all 导致apache 重启的解决办法

如 preg_match_all("/ni(.*?)wo/", $html, $matches);)进行分析匹配比较长的字符串 $html 时(大于10万字节,一般用于分析采集回来的网页源码),Apache服务器会崩溃自动重启。

在Apache错误日志里有这样的提示:

[Thu Apr 11 18:31:31 2013] [notice] Parent: child process exited with status 128 -- Restarting.
[Thu Apr 11 18:31:31 2013] [notice] Apache/2.2.9 (Win32) PHP/5.2.17 configured -- resuming normal operations
[Thu Apr 11 18:31:31 2013] [notice] Server built: Jun 13 2008 04:04:59
[Thu Apr 11 18:31:31 2013] [notice] Parent: Created child process 2964
[Thu Apr 11 18:31:31 2013] [notice] Disabled use of AcceptEx() WinSock2 API
[Thu Apr 11 18:31:31 2013] [notice] Child 2964: Child process is running
[Thu Apr 11 18:31:31 2013] [notice] Child 2964: Acquired the start mutex.
[Thu Apr 11 18:31:31 2013] [notice] Child 2964: Starting 350 worker threads.
[Thu Apr 11 18:31:31 2013] [notice] Child 2964: Listening on port 80.

那么如何增加win平台下 ThreadStackSize 的大小呢? 在apache的配置文件 httpd.conf 里启用 “Include conf/extra/httpd-mpm.conf”(删除前面的注释#),然后在 httpd-mpm.conf 文件里的 mpm_winnt_module 配置模块里设置 “ThreadStackSize 8400000”即可(大约8M)。

 代码如下 复制代码

 代码如下 复制代码
<IfModule mpm_winnt_module>
    ThreadStackSize 8400000
    ThreadsPerChild      200
    MaxRequestsPerChild    10000
    Win32DisableAcceptEx
</IfModule>

 

这里需要注意的是,32位的Apache程序只能最多使用大约2GB内存空间! 因此,ThreadStackSize 和ThreadsPerChild 的值相乘后(8M * 200)不应该超过2G,否则无法启动apache,出现的错误日志如下:
[Thu Apr 11 20:02:45 2013] [crit] (OS 8)存储空间不足,无法处理此命令。  : Child 4832: _beginthreadex failed. Unable to create all worker threads. Created 212 of the 220 threads requested with the ThreadsPerChild configuration directive.
    通过上面的提示,飘易可以告诉大家的是在我的这台服务器上,当线程堆栈大小设为8M时,我可以设置的线程数最多是212个。

实时输出如果放在js中我们可以直接使用settimeout来守时输入很方便,但是如果在php中实现起来就不能这样了,下面我来给介绍利用 ob_flush() 和 flush()函数实现即时实时输出内容.

一般情况下,PHP都是将整个页面全部执行完成后,才会把要输出的内容发送回客户端。例如有如下代码:

 代码如下 复制代码

for ($i = 0; $i < 10; $i++) {
 echo $i;
 sleep(1);
}

这段代码会在10秒钟后一次性输出“0123456789”。


对于运行时间较长的PHP程序来说可能都需要即时输出内容来查看运行情况。

 代码如下 复制代码

header(“Content-type:text/html;charset=utf-8″);

#设置执行时间不限时

 代码如下 复制代码
set_time_limit(0);

#清除并关闭缓冲,输出到浏览器之前使用这个函数。

 代码如下 复制代码
ob_end_clean();

#控制隐式缓冲泻出,默认off,打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。

 代码如下 复制代码
ob_implicit_flush(1);

这就用到了PHP的输出控制函数ob_flush()和flush()。我们把代码修改成下面这样:

 代码如下 复制代码


$str = 'Hello world";      
echo $str . str_repeat(' ', 256);      
ob_flush();      
flush();     
sleep(10); 
echo $str;

这段代码则会马上在屏幕上打印 Hello world。关键就在于第2和第3行调用的两个函数 ob_flush() 和 flush()。这两个函数得一起使用才能保证页面马上输出Hello world。其中str_repeat(' ', 256)则是为了解决某些浏览器必须在接收到256个字符后才会显示内容。

对上面函数升级

 代码如下 复制代码


<?php
error_reporting(0);
set_time_limit(0);

$buffer = ini_get('output_buffering');
echo str_repeat(' ',$buffer+1);
ob_end_flush();

for($i=1;$i<100;$i++){
    echo "$i<br>";
    sleep(1);
    flush();
}

这样,页面就会每一秒输出一个数字。
我们可以很方便的使用PHP的输出控制来实现页面执行进度的显示。不过,由于PHP页面有执行时间限制,而且长时间执行一个页面会对服务器造成一定的压力

本文章来给大家介绍如何在php中利用相关保代码来禁止浏览器缓存页面内容,在php中我们只要使用header命令带一些参数即可实例。

代码

 代码如下 复制代码

header("Cache-Control:no-cache,must-revalidate,no-store");   //这个no-store加了之后,Firefox下有效
header("Pragma:no-cache");
header("Expires:-1");

这个页面不缓存了,并且有个判断购物车商品为空就跳转到空购物车的页面,那么用户点击浏览器后退,回来之后,也直接到 购物车页面了。

PHP 禁止浏览器缓存页

 代码如下 复制代码

<?php   
  
//设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。   
header("Expires: Mon, 26 Jul 1970 05:00:00 GMT");     
  
//设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强制浏览器获取最新资料   
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");     
  
//告诉客户端浏览器不使用缓存,HTTP 1.1 协议   
header("Cache-Control: no-cache, must-revalidate");     
  
//告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议   
header("Pragma: no-cache");   
  
?>


但加上面三句在IE中有效,在FF中无效,在FF中在加上下面这句。

 代码如下 复制代码

<meta http-equiv="Cache-Control" content="no-store">


日我突发奇想,找到了一种在任何情况下都会显示最新的网页内容的方法,描述如下:

请将网页的链接改为:

http://xxx.yyy.zzz/page.php?rand=XXXXXXX

其中http://xxx.yyy.zzz/page.php是你的网页,rand是一个你不会用到的Qurey字串,XXXXXXX是一个随机字串。


其它的如asp,jsp设置方法

ASP:

 代码如下 复制代码

response.expires=0
response.addHeader("pragma","no-cache")
response.addHeader("Cache-Control","no-cache, must-revalidate")

JSP:

 代码如下 复制代码

response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

在学习时我们经常会被老师拿几个数字来让大家进行各种排序,下面我来给各位同学介绍一下PHP冒泡排序算法,大家可直接合去给你老题师哈。

排序实现过程如下:
49   38   65   97   76   13   27
38   49   65 97   76   13   27               比较第1个和第2个数,小的放前边,大的放后边 38   49   65   97   76   13   27               比较第2个和第3个数,小的放前边,大的放后边 38   49   65   97   76   13   27               比较第3个和第4个数,小的放前边,大的放后边 38   49   65   76   97   13   27               比较第4个和第5个数,小的放前边,大的放后边 38   49   65   76   13   97   27               比较第5个和第6个数,小的放前边,大的放后边 38   49   65   76   13   27   97               比较第6个和第7个数,小的放前边,大的放后边 至此,第一趟比较结束,得到以下排序: 38   49   65   76   13   27   97  
然后按照第一趟排序的方法继续比较,直到完成排序。

列1

 代码如下 复制代码

$arr = array(345,4,17,6,52,16,58,69,32,8,234);
for($i=1;$i<count($arr);$i++){
for($j=count($arr)-1;$j>=$i;$j--){
if($arr[$j]<$arr[$j-1]){
$temp = $arr[$j-1];
$arr[$j-1] = $arr[$j];
$arr[$j] = $temp;
}
}
}

列2

 代码如下 复制代码

/**
 * php冒泡排序算法的实现
 * @param array $array 一维数组
 * @return array 排序过后的数组
 */
function bsort(array $array){
    $count = count($array);
    if($count == 0){
        return array();
    }elseif($count == 1){
        return $array;
    }elseif($count > 1){
        for($i=0;$i<$count;$i++){
            for($j=$count-1;$j>$i;$j--){
                if($array[$j]<$array[$j-1]){
                    $temp = $array[$j];
                    $array[$j] = $array[$j-1];
                    $array[$j-1] = $temp;
                }
            }
        }
        return $array;
    }else{
        return false;
    }
}

$arr = array(56,2,5,78,110,36,52,77,89,3,10);
print_r(bsort($arr));

在php中无限分类是我们在实际开发中经常用到的一种数据结构,一般我们称之为树形结构,像我网站的分类php教程有php入门,正则等等分类,这种是二级不是无限级了,如果是无限级就可以在子类下加子类了。

我们先来看我实现无限分类的具体过程。

题设:类似淘宝的商品分类,可以在任意分类设置其子类。
 

一、创建`type`数据表

 代码如下 复制代码

`id` 自增长

`fid` int(11) 默认(0) ,父节点id

`name` varchar(50),分类名称

CREATE TABLE `type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fid` int(11) NOT NULL DEFAULT '0',
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
)

二、添加

我们先添加几个顶级分类

 代码如下 复制代码

INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '手机');
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '电脑');
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '鞋子');
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '衣服');这里fid=0是代表顶级分类

 

接着我们为{电脑}添加几个个子分类

 代码如下 复制代码

INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '2', '台式'), (NULL, '2', '笔记本');这里fid=2,

2这个id是分类{电脑}的id,如果是添加{鞋子}的子分类则fid=3

同理我们为{笔记本}添加子分类则fid=6

 代码如下 复制代码

INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '6', 'ausu'), (NULL, '6', 'hp');

三、删除

如果我们想删除{笔记本}这个分类,很简单

DELETE FROM `type` WHERE `id`=6{笔记本}的子分类我们也要记得做相应的处理

 代码如下 复制代码


function del($fid) {
    $sql="SELECT * FROM `type` WHERE `fid`=$fid";
    $rs=mysql_query($sql);
   
    for ($i = 0; $i < count($rs); $i++) {
        $sql="DELETE FROM `type` WHERE `id`={$rs[$i]['id']}";
        mysql_query($sql);
       
        del($rs['id']);//递归
    }
}

del(6);//执行操作这里你也许你会疑惑为什么那么麻烦用递归,而不是直接这样删除

DELETE FROM `type` WHERE `fid`=6这样我们不就可以直接删除{ausu}、{hp}?但是假设{ausu}有一个子分类{a1},{a1}也有一个子分类{a2},如果不用递归我们就无法彻底删除数据。

 

三、查找

1.查找{电脑}的子分类

SELECT * FROM `type` WHERE `fid`=22.查找{电脑}的所有子分类

 代码如下 复制代码


function sel($fid) {
    $sql="SELECT * FROM `type` WHERE `fid`=$fid";
    $rs=mysql_query($sql);
   
    for ($i = 0; $i < count($rs); $i++) {
        echo $rs[$i]['name'];
       
        sel($rs[$i]['id']);//递归
    }
}

sel(2);

四、实际数据应用

在数据表添加一个字段`tid`,字段值为记录所属分类`type`表的id。必须是id不能是name,因为name的值可能会改变。

例如查询属于{电脑}分类的商品

 代码如下 复制代码

SELECT * FROM `goods` WHERE `tid`=2


下面再看个实例,直接操作数组

 

 代码如下 复制代码

<?php
$rows = array(
    array(
        'id' => 1,
        'name' => 'dev',
        'parentid' => 0
    ),
    array(
        'id' => 2,
        'name' => 'php',
        'parentid' => 1
    ),
    array(
        'id' => 3,
        'name' => 'smarty',
        'parentid' => 2
    ),
    array(
        'id' => 4,
        'name' => 'life',
        'parentid' => 0
    ),
    array(
        'id' => 5,
        'name' => 'pdo',
        'parentid' => 2
    ),
    array(
        'id' => 6,
        'name' => 'pdo-mysql',
        'parentid' => 5
    ),
    array(
        'id' => 7,
        'name' => 'java',
        'parentid' => 1
    )
);

// 72648
// 84072

function findChild(&$arr,$id){
 
    $childs=array();
     foreach ($arr as $k => $v){
         if($v['parentid']== $id){
              $childs[]=$v;
  
         }
       
    }
     
    return $childs;
   
   
}
function build_tree($root_id){
    global $rows;
    $childs=findChild($rows,$root_id);
    if(empty($childs)){
        return null;
    }
   foreach ($childs as $k => $v){
       $rescurTree=build_tree($v[id]);
       if( null !=   $rescurTree){
       $childs[$k]['childs']=$rescurTree;
       }
   }
    return $childs;
}

 
$tree=build_tree(0);

echo memory_get_usage();

print_r($tree);


?>

我自己用的可以做那种下拉效果并带有级数的效果

 代码如下 复制代码


function dafenglei_select($m,$id, $fenlei ){
 global $menu;
 $n = str_pad('',$m,'-',STR_PAD_RIGHT);
 $n = str_replace("-","&nbsp;&nbsp;&nbsp;",$n);
 for($i=0;$i<count($fenlei);$i++){
 
  if($fenlei[$i]['classid']==$id){
     $menu .= "<option value="".$fenlei[$i]['id']."">".$n."|—".$fenlei[$i]['name']."</option>n";
   }
   $this->dafenglei_select($m+1,$fenlei[$i]['id'], $fenlei );
  }
 }
 return $menu;
}

dafenglei_select(0,0, $fenlei );

$fenlei  无限分类数组 $id是选择从哪个分类开始 写0代表顶级开始分,只要把数组放进去就可以分了

[!--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#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • 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
  • php中的foreach函数的2种用法

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

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • PHP函数strip_tags的一个bug浅析

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

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
  • SQL Server中row_number函数的常见用法示例详解

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

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

    下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#虚函数用法实例分析

    这篇文章主要介绍了C#虚函数用法,实例分析了C#中虚函数的功能与基本使用技巧,需要的朋友可以参考下...2020-06-25