问题描述
我想从此链接中提取ID,我正在尝试以下方法。谁能指导我这是什么错误
$url="https://item.tbao.com/item.htm?id=570147082697";
$regular = '/id\=(.+?)\&/';
preg_match($regular,$url,$data,PREG_OFFSET_CAPTURE,3);
我希望有570147082697,但现在没有任何输出。
解决方法
我建议使用以下正则表达式:
(?<=id\=).+?(?=\&|$)
详细信息:
-
(?<=id\=).+?
:我们获得参数id的值,直到字符&或行尾之前,但没有得到字符串id = -
(?=\&|$)
:如果字符是&或行尾
要测试的代码:
//case1: just only id
$url="https://item.tbao.com/item.htm?id=570147082697";
$regular = '/(?<=id\=).+?(?=\&|$)/';
preg_match($regular,$url,$data,PREG_OFFSET_CAPTURE,3);
echo "case1\n";
print_r($data);
//case2: param id is leading
$url="https://item.tbao.com/item.htm?id=570147082697&test=abc";
$regular = '/(?<=id\=).+?(?=\&|$)/';
preg_match($regular,3);
echo "case2\n";
print_r($data);
//case3: param id is between two params
$url="https://item.tbao.com/item.htm?version=5.1&id=570147082697&test=abc";
$regular = '/(?<=id\=).+?(?=\&|$)/';
preg_match($regular,3);
echo "case3\n";
print_r($data);
结果:
case1
Array
(
[0] => Array
(
[0] => 570147082697
[1] => 34
)
)
case2
Array
(
[0] => Array
(
[0] => 570147082697
[1] => 34
)
)
case3
Array
(
[0] => Array
(
[0] => 570147082697
[1] => 46
)
)
希望我的建议能对您有所帮助。