淘宝链接,可能有N个参数,想把商品ID匹配出来,链接类似于:1、http://item.taobao.com/item.htm?id=9523770399&ali_refid=a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77&ali_trackid=1_7bcdc59fb0c21ce96e901436b439fd772、http://item.taobao.com/auction/item_detail.htm?item_num_id=9523770399&ali_refid=a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77&ali_trackid=1_7bcdc59fb0c21ce96e901436b439fd773、http://item.taobao.com/item.htm?id=95237703994、http://item.taobao.com/auction/item_detail.htm?item_num_id=9523770399以上4个全是一个商品的链接,我想把id=和item_num_id=后面的数字匹配出来。
//手册说 explode()比正则表达式快
$geturl=explode("&", $url);
//获取数组的第一个下标
$getitem=explode("=", $geturl[0]);
//返回“=”后面的数值
return $getitem[1];
}
嘿嘿。小弟菜鸟一枚,头一次在csdn发言,规矩都不懂,见谅。
所以你可以用explode將其拆分為數組,然後針對拆分後的結果進行處理,判斷裏邊是否有&符號或=符號
如果有則繼續explode最後就能出結果
$url = 'http://item.taobao.com/item.htm?id=9523770399&ali_refid=a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77&ali_trackid=1_7bcdc59fb0c21ce96e901436b439fd77';preg_match("/([a-z]+:\/\/)?([\w-]+)\.([\w-]+)(\.[\w-]+)*(\/)([\w-]+)\.([\w-]+)\?([\w-]+)=\d{0,}/",$url, $matches);
=>
array(9) {
[0]=>
string(45) "http://item.taobao.com/item.htm?id=9523770399"
[1]=>
string(7) "http://"
[2]=>
string(4) "item"
[3]=>
string(6) "taobao"
[4]=>
string(4) ".com"
[5]=>
string(1) "/"
[6]=>
string(4) "item"
[7]=>
string(3) "htm"
[8]=>
string(2) "id"
}
处理此类问题并不需要用正则表达式,php 已经提供了良好的函数
$ar = array(
'http://item.taobao.com/item.htm?id=9523770399&ali_refid=a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77&ali_trackid=1_7bcdc59fb0c21ce96e901436b439fd77',
'http://item.taobao.com/auction/item_detail.htm?item_num_id=9523770399&ali_refid=a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77&ali_trackid=1_7bcdc59fb0c21ce96e901436b439fd77',
'http://item.taobao.com/item.htm?id=9523770399',
'http://item.taobao.com/auction/item_detail.htm?item_num_id=9523770399'
);foreach($ar as $v) {
$u = parse_url($v);
parse_str($u['query'], $var);
print_r($var);
}Array
(
[id] => 9523770399
[ali_refid] => a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77
[ali_trackid] => 1_7bcdc59fb0c21ce96e901436b439fd77
)
Array
(
[item_num_id] => 9523770399
[ali_refid] => a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77
[ali_trackid] => 1_7bcdc59fb0c21ce96e901436b439fd77
)
Array
(
[id] => 9523770399
)
Array
(
[item_num_id] => 9523770399
)在这样的结果中获取你需要的东西不是很简单吗?
$str="http://item.taobao.com/item.htm?id=9523770399";
$mode="/\?item_num_id=(\d*)|&item_num_id=(\d*)|\?id=(\d*)|&id=(\d*)/";
preg_match($mode,$str,$arr);$arr=array_diff($arr, array(null));
echo $arr=implode(array_diff($arr, array($arr[0])));
?>
$ar = array(
'http://item.taobao.com/item.htm?id=9523770399&ali_refid=a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77&ali_trackid=1_7bcdc59fb0c21ce96e901436b439fd77',
'http://item.taobao.com/auction/item_detail.htm?item_num_id=9523770399&ali_refid=a3_619362_1007:1102373933:7:46702465U84y78608587678s868v3I:7bcdc59fb0c21ce96e901436b439fd77&ali_trackid=1_7bcdc59fb0c21ce96e901436b439fd77',
'http://item.taobao.com/item.htm?id=9523770399',
'http://item.taobao.com/auction/item_detail.htm?item_num_id=9523770399'
);foreach($ar as $v) {
$u = parse_url($v);
parse_str($u['query'], $var);
echo empty($var['id'])? $var['item_num_id'] : $var['id'];//获取具体的数字
echo "<br>";//跳行
}
?>