首页 >后端开发 >php教程 >求高手,关于网址正提取则

求高手,关于网址正提取则

WBOY
WBOY原创
2016-06-23 14:23:061015浏览

本帖最后由 dz215136304 于 2013-09-10 14:52:56 编辑

需求:提取出字符串中的url

因为需要将提取出来的网址再次处理,所以放到回调函数里,但是同样的正则放在preg_match_all正常,而放到preg_replace_callback中就不起作用,一下代码是提取出sdfsd.qq.www.qq.com

$con='http://sdfsd.qq.www.qq.com/sdf.html?a=c';//preg_match_all('/([a-z1-9\.]+\.[com|cn|info]+)/is', $con, $arr);//print_r($arr);这里可以正常提取出sdfsd.qq.www.qq.com的网址$conn=preg_replace_callback('/([a-z1-9\.]+\.[com|cn|info|tk|us]+)/isum', 'url', $con);//同样的正则放到这里就提取不出sdfsd.qq.www.qq.comecho $conn;   function url($url){return $url[1];//不管这里是$url[0]还是$url[1]}

回复讨论(解决方案)

preg_match_all 是提取
preg_replace_callback 是替换


function url($url){
  return $url[1];//原样返回
}
如何能看出效果呢?

preg_match_all 是提取
preg_replace_callback 是替换


function url($url){
  return $url[1];//原样返回
}
如何能看出效果呢?
帮我看下这个正则有点问题,如何修改呢
1.当字符串中有www.w3.org或者w3.org之类字符串时原样返回,现在问题是 只匹配到了org造成了结果是“http://www.w3.http://localhost/psh/1999/xhtml”
2.字符串中的此正则必须包含"i"参数来不区分大小写,档字符串中包含“loginInfo.js”时 也出错,匹配成了“http://localhost/xxx1rr1dpn/loginhttp://localhost/jogp.js”,正确的应该是“http://localhost/xxx1rr1dpn/loginInfo.js”

$con='http://www.w3.org/1999/xhtml,http://www.qq.com/loginInfo.js';$url=preg_replace_callback('/(http:\/\/?[a-zA-Z1-9\.]{2,}\.{1}com|cn|info|tk|org|us)/is', 'url', $con);echo $url; function url($url){	echo $url[1]."<br>";if($url[1]=='http://www.w3.org'||$url[1]=='www.w3.org'||$url[1]=='w3.org'){	return $url[1];}return "http://localhost/".str_replace("http://","",$url[1]);//}

试试

$con='http://www.w3.org/1999/xhtml,http://www.qq.com/loginInfo.js';  $url=preg_replace_callback('/http:\/\/[\w.]+(com|cn|info|tk|org|us)/is', 'url', $con);echo $url;  function url($url){    echo $url[0]."\n"; if($url[0]=='http://www.w3.org'||$url[0]=='www.w3.org'||$url[0]=='w3.org'){    return $url[0];}return "http://localhost/".str_replace("http://","",$url[0]);// }

preg_replace_callback 是替换

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn