正则表达式在URL中第4次删除后删除所有内容

时间:2012-01-09 15:27:55

标签: php regex substr strpos

我在PHP中使用友好的URL路径,其形式为:

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

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

有关如何做到这一点的任何想法?我想正则表达式可以处理它,但我很糟糕。我还认为strpossubstr的组合可能能够处理它,但无法弄明白。

4 个答案:

答案 0 :(得分:4)

您可以使用explode()功能:

$parts  = explode('/', '/2011/09/here-is-the-title/2');
$output = implode('/', array_slice($parts, 0, 4));

答案 1 :(得分:2)

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

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

带有空字符串。 如果没有,您可以替换

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

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

答案 2 :(得分:2)

替换

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

$ 1。

请参阅http://regexr.com?2vlr8了解实时示例

答案 3 :(得分:1)

你也可以使用循环:

result="";
for char c in URL:
    if(c is a slash) count++;
    if(count<4) result=result+c;
    else break;