关闭

PHP正则表达式中的特殊规则……

485人阅读 评论(2) 收藏 举报

平常工作中大多都在用perl编程,今天突然有个问题需要用php解决,翻开php的手册,发现了一个特殊的例子,引起了我的注意,平时养成喜欢专研的我费了1个小时才终于弄明白其中的道理,特意发个blog以加深记忆。

例子如下:

<?php
// get host name from URL
preg_match("/^(http:////)?([^//]+)/i"
"http://www.php.net/index.html", $matches);
$host = $matches[2
];

// get last two segments of host name
preg_match("/[^/.//]+/.[^/.//]+$/", $host, $matches
);
echo
"domain name is: {$matches[0]}/n"
;
?>

解释:

1、preg_match("/^(http:////)?([^//]+)/i""http://www.php.net/index.html", $matches);
上面这条语句中出现了两个 "^"字符,可意义完全不同,第一个表示“以XXX开头”,而第二个则表示“非XXX”的意思,因此以上正则表示的意思是:查找以http://开头(或没有http://)而不包含"/"的字串。

所以它会找出:“www.php.net”部分。

2、preg_match("/[^/.//]+/.[^/.//]+$/", $host, $matches);
表示:要找出由不包含"."和“/”的若干字符组成的两个字串,中间带一个".".

所以最张的输出结果是:domain name is: php.net

(全文完)

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:766次
    • 积分:16
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章存档
    最新评论