php 正则表达式 url匹配
如:
http://www.sina.com.cn/abc/de/fg.php
http://www.sina.com.cn/abc/de/fg.php?float=0.5
http://www.sina.com.cn/abc/de/fg.html?float=0.5
http://www.sina.com.cn/abc/de/fg.fg.php?float=0.5
要求用正则或者php函数匹配出以上的php或者html这样的扩展名 展开
1,preg_grep(pattern,array);它的返回值是一个新数组,新数组的元素是成功匹配的元素。
2,preg_match(mode,string);它的返回值是一个整数,0或1,0表示匹配不成功,1表示匹配成功,preg_match()将在第一个匹配成功后停止搜索,不再继续匹配。
3,preg_match_all(模式,字符串,保存匹配结果数组(multidimensional array));在搜索字符串中,所有匹配的模式都提供正则表达式的匹配结果,并以指定的顺序将它们输出到指定的数组。它执行与字符串末尾匹配的全局正则表达式匹配。
4,preg_quote(string);转义正则表达式字符,preg_quote()需要一个参数字符串,并在每个正则表达式语法中为该字符添加反斜杠。
5,转换效果如图所示。
1、 preg_grep(模式,数组);它的返回值是一个新数组,新数组的元素是匹配成功的元素。
2、preg_match(模式,字符串);它的返回值是一个整型,0或者1, 0表示匹配不成功,1表示匹配成功,preg_match()第一次匹配成功后将会停止搜索,不再继续往下匹配。
3、preg_match_all(模式,字符串,保存匹配结果的数组(多维数组));搜索字符串中,所有匹配模式给定正则表达式的匹配结果,并且将它们以指定的顺序输出到指定的数组中。它执行一个全局正则表达式匹配,一直匹配到字符串的末尾。
4、preg_quote(字符串);转义正则表达式字符, preg_quote() 需要参数字符串,并向其中每个正则表达式语法中的字符前增加一个反斜线。
5、转换效果如图所示。
不需要正则,以下代码就能实现:
<?php
$str = 'http://www.sina.com.cn/abc/de/fg.fg.php?float=0.5';
if(strpos($str, '?') !== false) {
$str = substr($str, 0, strpos($str, '?'));
$last_pos = strrpos($str, '.') + 1; // .号最后出现的位置
echo substr($str, $last_pos);
} else {
$last_pos = strrpos($str, '.') + 1; // .号最后出现的位置
echo substr($str, $last_pos);
}
$url="http://www.sina.com.cn/abc/de/fg.fg.php?float=0.5";
preg_match('/http:\/\/[0-9a-z\.\/\-]+\/[0-9a-z\.\/\-]+\.([0-9a-z\.\/\-]+)/',$url,$arr);
echo $arr[1];
?>