创建博客 登录  
 关注
   显示下一条  |  关闭

php-mysql-javascript

html-ajax-php-mysql-javascript-asp-css

 
 
 

日志

 
 

preg_match学习  

2008-06-25 09:28:47|  分类: php |  标签: |字号 订阅

preg_match 的用法 

 http://www.eastphp.com/   2007-07-14 

大家一看到preg_match肯定会头痛的。。。其实没什么,下面我就尽力给还不明白的兄弟们争取讲明白了:

在这里我就不解释preg_match的说明了,朋友们可以通过php手册查看..先来个简单点的:

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

"http://www.php.net/index.html",

$matches);

$host = $matches[2];

//

从主机名中取得后面两段

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

echo

"domain name is: {$matches[0]}n";

这是手册里的例子。多数人对preg_match犯晕都出在正则上,以后我也会介绍正则。先看这个例子,

preg_match($pattern,$string,$matcher)其中$pattern对应的就是”/^(http://)?([^/]+)/i

$str

http://www.php.net/index.html.$match是匹配到的结果。按照手册上的意思:

如果提供了

matches,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1]

将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。

这是什么意思呢?第一句就不用解释了,$matches[0]

将包含与整个模式匹配的文本。

咱们用pring_r打印出来第一个$matches:

Array ( [0] => http://www.php.net [1] => http:// [2] => www.php.net )

这回明白了吧。。$matches[0]

将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本。在正则中,()代表模式:匹配 pattern

并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用

$0…$9 属性。就是说数组中下标为1的值就是正则中/^(http://)?([^/]+)/i第一个()里的值!数组下标2的值以此类推

++++++++++++++++++++++++++++++++++++++++

追加注释:

++++++++++++++++++++++++++++++++++++++++++

PHP extract() 函数

PHP Array 函数

定义和用法

PHP extract() 函数从数组中把变量导入到当前的符号表中。

对于数组中的每个元素,键名用于变量名,键值用于变量值。

第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。

本函数返回成功设置的变量数目。

语法

extract(array,extract_rules,prefix)

参数 描述
array 必需。规定要使用的输入。
extract_rules

可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中的变量名是否冲突。

对非法、数字和冲突的键名的处理将根据此参数决定。可以是以下值之一:

可能的值:

  • EXTR_OVERWRITE - 默认。如果有冲突,则覆盖已有的变量。
  • EXTR_SKIP - 如果有冲突,不覆盖已有的变量。(忽略数组中同名的元素)
  • EXTR_PREFIX_SAME - 如果有冲突,在变量名前加上前缀 prefix。自 PHP 4.0.5 起,这也包括了对数字索引的处理。
  • EXTR_PREFIX_ALL - 给所有变量名加上前缀 prefix(第三个参数)。
  • EXTR_PREFIX_INVALID - 仅在非法或数字变量名前加上前缀 prefix。本标记是 PHP 4.0.5 新加的。
  • EXTR_IF_EXISTS - 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。本标记是 PHP 4.2.0 新加的。
  • EXTR_PREFIX_IF_EXISTS - 仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。本标记是 PHP 4.2.0 新加的。
  • EXTR_REFS - 将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。本标记是 PHP 4.3.0 新加的。
prefix

可选。请注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。

前缀和数组键名之间会自动加上一个下划线。

例子 1

<?php$a = 'Original';$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

例子 2

使用全部参数:

<?php$a = 'Original';$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");extract($my_array, EXTR_PREFIX_SAME, 'dup');echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;";?>

输出:

$a = Original; $b = Dog; $c = Horse; $dup_a = Cat;

  评论这张
转发至微博
转发至微博
0   分享到:        
阅读(939)| 评论(0)| 引用 (0) |举报

历史上的今天

相关文章

最近读者

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012