转:http://118ss.blog.163.com/blog/static/6560818200852592847982/

大家一看到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;