使用php从给定链接提取数据

使用php从给定链接提取数据,php,regex,debugging,Php,Regex,Debugging,我想从这个链接中提取id,我正在尝试以下操作。谁能告诉我怎么了 $url="https://item.tbao.com/item.htm?id=570147082697"; $regular = '/id\=(.+?)\&/'; preg_match($regular, $url, $data, PREG_OFFSET_CAPTURE, 3); 我希望有这个570147082697,但我现在没有任何输出。我建议使用以下正则表达式: (?<=id\=).+?(?

我想从这个链接中提取id,我正在尝试以下操作。谁能告诉我怎么了

$url="https://item.tbao.com/item.htm?id=570147082697";
$regular = '/id\=(.+?)\&/';
preg_match($regular, $url, $data, PREG_OFFSET_CAPTURE, 3);

我希望有这个570147082697,但我现在没有任何输出。

我建议使用以下正则表达式:

(?<=id\=).+?(?=\&|$)
结果:

case1
Array
(
    [0] => Array
        (
            [0] => 570147082697
            [1] => 34
        )

)
case2
Array
(
    [0] => Array
        (
            [0] => 570147082697
            [1] => 34
        )

)
case3
Array
(
    [0] => Array
        (
            [0] => 570147082697
            [1] => 46
        )

)

我希望我的建议能对您有所帮助。

错误可能是首先使用regex,而不是对可能已经存在哪些函数来完成工作进行一点研究
parse_url
parse_str
可以轻松完成此操作。此外,请适当标记。这绝对与问题跟踪无关,因为示例URL可能来自这样的上下文..+?是惰性匹配,这意味着它将得到尽可能少的匹配。此外\&将尝试按字面意思匹配,但在url中没有&。如果您这样编写正则表达式:/id\=(.+)/它应该与idI匹配,我认为OP想要id的值,而不需要查看问题中使用的捕获组的
id=
部分。@Thefourthbird这是我的错误。谢谢你指出。我编辑了我的答案。(ˊᗜˋ)/ᵗᑋᵃᐢᵏ ᵞᵒᵘ*我认为
\bid=\K[^&]+(?=&$)
\bid=\K[^&]+
也可以。请注意,您不必逃避
\=
\&
我感谢您提出的解决方案。
case1
Array
(
    [0] => Array
        (
            [0] => 570147082697
            [1] => 34
        )

)
case2
Array
(
    [0] => Array
        (
            [0] => 570147082697
            [1] => 34
        )

)
case3
Array
(
    [0] => Array
        (
            [0] => 570147082697
            [1] => 46
        )

)