名站导航为爱好php程序的朋友们提供php相关的教程知识。
preg_match ― 进行正则表达式匹配。
语法:int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] )
在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。如果提供了 matches ,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
参数 | 说明 |
---|---|
pattern | 正则表达式 |
subject | 需要匹配检索的对象 |
matches | 可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推 |
flags 可以是下列标记:PREG_OFFSET_CAPTURE。如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。本标记自 PhP程序 4.3.0 起可用。
flags 参数自 PhP程序 4.3.0 起可用。
preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。preg_match_all() 则相反,会一直搜索到 subject 的结尾处。如果出错 preg_match() 返回 FALSE。
如果只想查看一个字符串是否包含在另一个字符串中,不要用 preg_match()。可以用 strpos() 或 strstr() 替代,要快得多。
获取Google首页title
比如说要获取google首页的title内容,具体代码如下如下:
<?php $str = file_get_contents('http://www.mzdh.net'); preg_match('/<title>(.*)<\/title>/', $str, $arr); echo $arr[1]; ?>
从网址获取域名
<?php preg_match("/^(http:\/\/)?([^\/] )/i", "http://www.mzdh.net/index.html", $matches); $host = $matches[2];// 从主机名中取得后面两段 preg_match("/[^\.\/] \.[^\.\/] $/", $host, $matches); echo "domain name is: {$matches[0]}\n"; ?>
如果提供了 matches,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。preg_match($pattern,$string,$matcher)其中$pattern对应的就是/^(http:\/\/)?([^\/] )/i,$string 是http://www.php.net/index.html,$match是匹配到的结果。
$matches[0] 将包含与整个模式匹配的文本。咱们用pring_r打印出来第一个$matches:
Array (
[0] => http://www.mzdh.net
[1] => http://
[2] => www.mzdh.net )
在文本中搜索特定字符串$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本。在正则中,()代表模式:匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。就是说数组中下标为1的值就是正则中/^(http:\/\/)?([^\/] )/i第一个()里的值!数组下标2的值以此类推。
<?php // 模式定界符后面的 "i" 表示不区分大小写字母的搜索 if (preg_match ("/nowamagic/i", "Welcome to zzarea.com.")) { print "A match was found."; } else { print "A match was not found."; } ?>
好了关于php程序的知识就说到这里希望可以帮助需要的朋友。,CI框架下hooks使用说明以及它的作用
//hooks源码 //hooks即钩子,主要作用是CI框架下扩展base_system,他的主要作用是在CI启动时, //运行一些开发者定义的一些方法,来实现一些特定的功能 //在application/config/hooks.php中定义的要在CI启动时启动的方法定义 $hook['pre_controller'][] = array( 'class' => 'MyClass', 'function' => 'Myfunction', 'filename' => 'Myclass.php', 'filepath' => 'hooks', 'params' => array('beer', 'wine', 'snacks') ); $hook['pre_controller'][] = array( 'class' => 'MyOtherClass', 'function' => 'MyOtherfunction', 'filename' => 'Myotherclass.php', 'filepath' => 'hooks', 'params' => array('red', 'yellow', 'blue') ); //hooks源码 首先判断hooks中(即自定义的类似于上面数组)是否存在或者是不是二位数组 if (isset($this->hooks[$which][0]) AND is_array($this->hooks[$which][0])){ //如果是则进行循环,并且运行run_hook foreach ($this->hooks[$which] as $val){ $this->_run_hook($val); } }else{ //如果不是,则直接运行hooks $this->_run_hook($this->hooks[$which]); } //下面设置$this->in_progress = TRUE;主要是防止同时调用一个hook,当new了一个新的对象后, //就要把in_progress标记为false $this->in_progress = TRUE; if ($class !== FALSE){ if ( ! class_exists($class)){ require($filepath); } $hOOK = new $class; $hOOK->$function($params); }else{ if ( ! function_exists($function)){ require($filepath); } $function($params); } $this->in_progress = FALSE;