3

在像下面这样的 url 中,我想获取 ProdId 的值。URL 格式将始终保持一致,参数名称也将始终保持一致,但值的长度可能会发生变化。它始终是数字。

http://www.example.com/page.php?ProdId=2683322&xpage=2

使用 PHP 获得它的最快方法是什么(我将处理 10,000 个,所以速度是个问题)?

4

5 回答 5

13

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
于 2010-05-30T22:15:37.390 回答
6

试试这个正则表达式:

^http://www\.example\.com/page\.php\?ProdId=(\d+)
于 2010-05-30T22:01:47.717 回答
2

试试这个功能:

/https?:\/{2}(?:w{3}\.)?[-.\w][^\.]+\.{2,}\/ProdId=\d+\&xpage=\d+/
于 2010-05-31T16:04:23.367 回答
2

你不能用$_GET['ProdId']吗?

于 2010-05-30T22:01:56.627 回答
0
/^[^#?]*\?(?:[^#]*&)?ProdId=(\d+)(?:[#&]|$)/

英语也是这样:

  1. 匹配除?or之外的任何内容#(这将使我们到达查询字符串或哈希部分的开头,以先到者为准)
  2. 匹配?(如果只有哈希部分,这将取消匹配)
  3. 可以选择匹配任何内容(但不是 #,以防有哈希部分),然后是&
  4. 匹配您的键值对,将值放入捕获子模式
  5. 匹配下一个参数的 &、# 或字符串的结尾。
于 2010-05-30T22:08:25.517 回答