正则表达式获取数字URL参数的值?

时间:2010-05-30 21:59:11

标签: php regex url url-parameters

在下面的网址中,我想获得ProdId的价值。 URL格式将始终保持一致,参数名称也将保持一致,但值的长度可能会更改。它始终是数字。

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

使用PHP获取它的最快方法(我将处理10,000的速度,这是一个问题)?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:6)

试试这个正则表达式:

^http://www\.example\.com/page\.php\?ProdId=(\d+)

答案 2 :(得分:2)

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

答案 3 :(得分:2)

尝试此功能:

/https?:\/{2}(?:w{3}\.)?[-.\w][^\.]+\.{2,}\/ProdId=\d+\&xpage=\d+/

答案 4 :(得分:0)

/^[^#?]*\?(?:[^#]*&)?ProdId=(\d+)(?:[#&]|$)/

同样的英文:

  1. 匹配除?#之外的任何内容(这会将我们带到查询字符串或哈希部分的开头,以先到者为准)
  2. 匹配?(如果只有哈希部分,则会取消比赛资格)
  3. 可选择匹配任何内容(但不是#,如果有散列部分),后跟&
  4. 匹配将值放在捕获子模式中的键值对
  5. 匹配下一个参数&,#或字符串的结尾。