Reputation: 27769
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)?
Upvotes: 3
Views: 4672
Reputation: 1325
Try this function:
/https?:\/{2}(?:w{3}\.)?[-.\w][^\.]+\.{2,}\/ProdId=\d+\&xpage=\d+/
Upvotes: 2
Reputation: 32155
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
Upvotes: 13
Reputation: 65156
/^[^#?]*\?(?:[^#]*&)?ProdId=(\d+)(?:[#&]|$)/
And the same in English:
?
or #
(this will get us to the beginning of the query string or the hash part, whichever comes first)?
(if there was only a hash part, this will disqualify the match)&
Upvotes: 0
Reputation: 655519
Try this regular expression:
^http://www\.example\.com/page\.php\?ProdId=(\d+)
Upvotes: 6