1

我在 PHP 中使用以下形式的友好 URL 路径:

/2011/09/here-is-the-title
/2011/09/here-is-the-title/2

我需要标准化这些 URL 路径以删除 4 个斜杠之后的任何内容,包括斜杠本身。第 4 个斜线后的值有时是数字,但也可以是任何参数。

关于我如何做到这一点的任何想法?我想正则表达式可以处理它,但我对它很糟糕。我也想过一个组合strpos并且substr可能能够处理它,但不能完全弄清楚。

4

4 回答 4

4

您可以使用explode()功能:

$parts  = explode('/', '/2011/09/here-is-the-title/2');
$output = implode('/', array_slice($parts, 0, 4));
于 2012-01-09T15:32:10.753 回答
2

如果您的正则表达式实现支持任意长度的后视断言,您可以替换

(?<=^[^/]*(/[^/]*){3})/.*$

带有一个空字符串。如果没有,您可以更换

 ^([^/]*(?:/[^/]*){3})/.*$

与第一个捕获组的内容。可以在ideone.com找到第二个的 PHP 示例。

于 2012-01-09T15:31:55.133 回答
2

代替

%^((/[^/]*){3}).*%g

1美元。

请参阅http://regexr.com?2vlr8以获取实时示例

于 2012-01-09T15:34:12.767 回答
1

你也可以使用循环:

result="";
for char c in URL:
    if(c is a slash) count++;
    if(count<4) result=result+c;
    else break;
于 2012-01-09T15:35:31.067 回答