http://detail.tmall.com/item.htm?id=18796056163
http://item.taobao.com/item.htm?spm=a220z.1000881.0.82&id=19150004171
http://item.taobao.com/item.htm?id=16181772778这样的链接保留id=.... 的部分,其他都替换成
javascrpit:clickItem("18796056163");
javascrpit:clickItem("19150004171");
javascrpit:clickItem("16181772778");
http://item.taobao.com/item.htm?spm=a220z.1000881.0.82&id=19150004171
http://item.taobao.com/item.htm?id=16181772778这样的链接保留id=.... 的部分,其他都替换成
javascrpit:clickItem("18796056163");
javascrpit:clickItem("19150004171");
javascrpit:clickItem("16181772778");
echo $part[1];
if(preg_match("/id=[\d]+$/",$url,$result)) {
echo $result[1];
}
<a target="_blank" href="http://detail.tmall.com/item.htm?id=4476817718"></a>
</div>
......
<div class="desc">
<a target="_blank" href="http://detail.tmall.com/item.htm?id=4285064738" class="permalink" style="">描述</a></div>=======分割线========把有颜色标记的href部分,替换成这样的<a target="_blank" href="javascrpit:clickItem('4476817718')"></a>
</div>
......
<div class="desc">
<a target="_blank" href="javascrpit:clickItem('4285064738')" class="permalink" style="">描述</a></div>
<a target="_blank" href="http://detail.tmall.com/item.htm?id=4476817718"></a>
</div>
......
<div class="desc">
<a target="_blank" href="http://detail.tmall.com/item.htm?id=4285064738" class="permalink" style="">描述</a></div>
txt;
echo preg_replace('/href=".+?id=(\d+)"/is',"href=\"javascrpit:clickItem('$1')\"",$s);
这时候需要如果item.htm? 匹配后面参数id的数值,如果href中没有id参数;那么链接保持原来的不变
$s=<<<txt
<a target="_blank" href="http://detail.tmall.com/item.htm?id=4476817718">好好</a>
</div>
<a target="_blank" href="http://www.sina.com.cn">不显示1</a>
</div>
<a target="_blank" href="http://detail.tmall.com/item.htm?spm=a2106.m874.1000384.d11&id=15393357623&pm2=1&source=dou&scm=1029.0.1.0">不显示2</a>
</div>
......
<div class="desc">
<a target="_blank" href="http://detail.tmall.com/item.htm?id=4285064738" class="permalink" style="">描述</a></div>
txt;
echo preg_replace('/href=".+?id=(\d+)"/is',"href=\"javascrpit:clickItem('$1')\"",$s);
if(strpos($m[1],'id=')===false) return $m[0];
preg_match('/id=(\d+)/',$m[1],$id);
return "href=\"javascrpit:clickItem('$id[1]')\"";
}
<a target="_blank" href="http://hello.tmall.com/good.html?id=99888889">你好2</a>
会被替换成
<a target="_blank" href="javascrpit:clickItem('99888889')">你好2</a>如果只有当链接中含有item.htm 和id= 的时候才替换链接该怎么写呢。
http://hello.tmall.com/good.html?id=99888889 (不替换,没有出现item)
http://hello.tmall.com/okitd.html?uid=099889999$id=99888889 (不替换,没有出现item)
http://hello.tmall.com/item.html?cid=099889999 (不替换,没有出现id=)http://detail.tmall.com/item.htm?spm=a2106.m874.1000384.d11&id=15393357623&pm2=1&source=dou&scm=1029.0.1.0 (同时出现item.htm 和 id=替换)
http://item.taobao.com/item.htm?id=9999999999999(同时出现item.htm 和 id=替换)再次谢谢。
function foo($m){
if(strpos($m[1],'id=')===false || strpos($m[1],'item')===false) return $m[0];
preg_match('/id=(\d+)/',$m[1],$id);
return "href=\"javascrpit:clickItem('$id[1]')\"";
}
$s = <<<TEXT
<a target="_blank" href="http://hello.tmall.com/good.html?id=99888889">a</a>
<a target="_blank" href="http://hello.tmall.com/item.html?id=99888889">b</a>
<a target="_blank" href="http://hello.tmall.com/okitd.html?uid=099889999$id=99888889">c</a>
<a target="_blank" href="http://hello.tmall.com/item.html?cid=099889999">d</a>
<a target="_blank" href="http://detail.tmall.com/item.htm?spm=a2106.m874.1000384.d11&id=15393357623&pm2=1&source=dou&scm=1029.0.1.0">e</a>
<a target="_blank" href="http://item.taobao.com/item.htm?id=9999999999999">f</a>
TEXT;echo preg_replace('/href=".+?item\\.html?.*?[^\\w]id=([0-9]+)(.*)"/i','href="javascrpit:clickItem(\'$1\')"',$s);
?>