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

发布于 2024-09-03 04:51:25 字数 219 浏览 8 评论 0原文

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

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

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

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)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

霞映澄塘 2024-09-10 04:51:25

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

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
像极了他 2024-09-10 04:51:25

试试这个正则表达式:

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

Try this regular expression:

^http://www\.example\.com/page\.php\?ProdId=(\d+)
帅气称霸 2024-09-10 04:51:25

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

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

浅笑轻吟梦一曲 2024-09-10 04:51:25

试试这个功能:

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

Try this function:

/https?:\/{2}(?:w{3}\.)?[-.\w][^\.]+\.{2,}\/ProdId=\d+\&xpage=\d+/
演多会厌 2024-09-10 04:51:25
/^[^#?]*\?(?:[^#]*&)?ProdId=(\d+)(?:[#&]|$)/

英语也是如此:

  1. ?# 之外的任何内容(这将使我们到达查询字符串的开头或哈希部分,以先到者为准)
  2. 匹配 code>? (如果只有哈希部分,这将取消匹配资格)
  3. 可以选择匹配任何内容(但不是 #,以防有哈希部分),后跟 &
  4. 匹配将值放入捕获子模式的键值
  5. 对匹配下一个参数的 &、# 或字符串的末尾。
/^[^#?]*\?(?:[^#]*&)?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.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文