平常工作中大多都在用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
(全文完)