Heim >Backend-Entwicklung >PHP-Tutorial >求高手,关于网址正提取则

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

WBOY
WBOYOriginal
2016-06-23 14:23:061003Durchsuche

本帖最后由 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 是替换

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn