日期:2014-05-17  浏览次数:20491 次

请高手帮忙修改下正则代码,不能完全匹配
1.需求,将网页中所有href=""内的地址处理后再放回原处,由于css的地址也是href开头和http,所以需要将<a一起匹配(网址有可能是http://www.qq.com这种形式,也有可能是http://www.qq.com/sdfsd.php?id=10&dsfs=dsf这种等等),我下面的代码,http://ygtc.tmall.com可以匹配,但是http://phny.tmall.com却不行,分析后发现后面的网址<a后多个class,下面贴上我的代码


$con=file_get_contents("http://phny.tmall.com");//或者$con=file_get_contents("http://ygtc.tmall.com");
$con=preg_replace_callback('/(<a.+?href=")([^\s"]+)/is', 'url', $con);
echo $con; 
 
function url($url){
return $url[1].'#';//这里简单处理下,作为事例,实际上要比这复杂 
}


2.求一个伪静态规则,需求:访问 http://www.abc.com/taobao/phny/ 或者http://www.abc.com/phny/ 都转向到show.php\?domain=$1,如果这个网址中有images字符串便不匹配这条规则

我写的代码如下,可是却不起作用

RewriteRule ([a-zA-Z\d=]+)/?$ show.php\?domain=$1

------解决方案--------------------
如果是这样
http://www.abc.com/taobao 转到 http://www.abc.com/show.php?domain=taobao
http://www.abc.com/taobao/phny 转到 http://www.abc.com/show.php?domain=taobao/phny

那可以这样用(路径不含.就跳转)
RewriteEngine on
RewriteRule ^[^\.]+$ /show.php?a=$0 [R,L]