【问题标题】:PHP regex to get specific values between slashes in a URLPHP正则表达式获取URL中斜线之间的特定值
【发布时间】:2013-12-10 17:54:34
【问题描述】:

我有一个字符串,它或多或少有 2000 个字符,并且包含 URL(一系列 url)。我想用正则表达式从这个 URL 中获取特定的值,但我不知道如何使用它们。

字符串的一部分是这样的:

$string = [...]http://localhost/project/gallery/http://localhost/project/case/category#/img#/case#/http://localhost/project/case/category#/img#/case#/http://localhost/project/sitemap[...]

我想要的是为每个不同的类别、图像和/或所有出现的案例 (例如: "main-category/45/main/" 和 "secondary-category/51/id12").

如果 category# 超过 1 个单词,则使用“-”(例如:“main-category”)

img# 始终是 2 到 3 位数字(例如:“45”)。

case# 从纯文本(如果超过 1 个单词,则用“-”连接)到 4 到 5 个字符长的字符串,其中前两个字符是“id”,另一个是3 个字符作为数字 (eg1: "main-case", eg2: "id45").

有一点需要注意,如果这对任何人都有帮助的话,我想得到的是 alwayscase/ 之后。

我想要不包含带有 substr 等的循环的答案/回复。

【问题讨论】:

  • 这可能不是正则表达式的工作,而是你选择的语言的现有工具。正则表达式不是你在碰巧涉及字符串的每个问题上挥舞的魔杖.您可能希望使用已经编写、测试和调试过的现有代码。在 PHP 中,使用 parse_url 函数。 Perl:URI module。红宝石:URI module。 .NET:'Uri' class

标签: php regex url pcre


【解决方案1】:

您可以使用此正则表达式来匹配您的输入 URI:

'~/case/([^/]+)/(\d{2,3})/([^/]+)/~i'

以匹配组#1为类别,组#2为img#,组#3为case3

工作演示:http://ideone.com/xrsVtf

【讨论】:

  • 非常感谢!这就是我要找的! +1 的答案和工作演示!为什么正则表达式必须这么难?!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2017-11-06
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多