Regex to get value of a numeric URL parameter?

2019-01-24 20:26发布

In a url like the one below, I'd like to get the value of ProdId. The URL format will always be consistent, as will the parameter name, but the length of the value may change. It will always be numeric.

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

Using PHP what's the fastest way to get it (I'll be processing 10,000's so speed is an issue)?

5条回答
家丑人穷心不美
2楼-- · 2019-01-24 20:33

Can't you use $_GET['ProdId']?

查看更多
\"骚年 ilove
3楼-- · 2019-01-24 20:37

Try this regular expression:

^http://www\.example\.com/page\.php\?ProdId=(\d+)
查看更多
虎瘦雄心在
4楼-- · 2019-01-24 20:44
/^[^#?]*\?(?:[^#]*&)?ProdId=(\d+)(?:[#&]|$)/

And the same in English:

  1. Match anything except ? or # (this will get us to the beginning of the query string or the hash part, whichever comes first)
  2. Match the ? (if there was only a hash part, this will disqualify the match)
  3. Optionally match anything (but not a #, in case there's a hash part) followed by &
  4. Match your key value pair putting the value in a capturing subpattern
  5. Match either the next param's &, the # or the end of the string.
查看更多
狗以群分
5楼-- · 2019-01-24 20:50

Try this function:

/https?:\/{2}(?:w{3}\.)?[-.\w][^\.]+\.{2,}\/ProdId=\d+\&xpage=\d+/
查看更多
Juvenile、少年°
6楼-- · 2019-01-24 20:52

PHP has built-in functions for this. Use parse_url() and parse_str() together.

Pieced together from 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
查看更多
登录 后发表回答