在像下面这样的 url 中,我想获取 ProdId 的值。URL 格式将始终保持一致,参数名称也将始终保持一致,但值的长度可能会发生变化。它始终是数字。
http://www.example.com/page.php?ProdId=2683322&xpage=2
使用 PHP 获得它的最快方法是什么(我将处理 10,000 个,所以速度是个问题)?
在像下面这样的 url 中,我想获取 ProdId 的值。URL 格式将始终保持一致,参数名称也将始终保持一致,但值的长度可能会发生变化。它始终是数字。
http://www.example.com/page.php?ProdId=2683322&xpage=2
使用 PHP 获得它的最快方法是什么(我将处理 10,000 个,所以速度是个问题)?
PHP为此提供了内置函数。parse_url()
和parse_str()
一起使用。
从 php.net 拼凑而成:
$url = 'http://www.example.com/page.php?ProdId=2683322&xpage=2';
// Parse the url into an array
$url_parts = parse_url($url);
// Parse the query portion of the url into an assoc. array
parse_str($url_parts['query'], $path_parts);
echo $path_parts['ProdId']; // 2683322
echo $path_parts['xpage']; // 2
试试这个正则表达式:
^http://www\.example\.com/page\.php\?ProdId=(\d+)
试试这个功能:
/https?:\/{2}(?:w{3}\.)?[-.\w][^\.]+\.{2,}\/ProdId=\d+\&xpage=\d+/
你不能用$_GET['ProdId']
吗?
/^[^#?]*\?(?:[^#]*&)?ProdId=(\d+)(?:[#&]|$)/
英语也是这样:
?
or之外的任何内容#
(这将使我们到达查询字符串或哈希部分的开头,以先到者为准)?
(如果只有哈希部分,这将取消匹配)&