我在 PHP 中使用以下形式的友好 URL 路径:
/2011/09/here-is-the-title
/2011/09/here-is-the-title/2
我需要标准化这些 URL 路径以删除 4 个斜杠之后的任何内容,包括斜杠本身。第 4 个斜线后的值有时是数字,但也可以是任何参数。
关于我如何做到这一点的任何想法?我想正则表达式可以处理它,但我对它很糟糕。我也想过一个组合strpos
并且substr
可能能够处理它,但不能完全弄清楚。
您可以使用explode()
功能:
$parts = explode('/', '/2011/09/here-is-the-title/2');
$output = implode('/', array_slice($parts, 0, 4));
如果您的正则表达式实现支持任意长度的后视断言,您可以替换
(?<=^[^/]*(/[^/]*){3})/.*$
带有一个空字符串。如果没有,您可以更换
^([^/]*(?:/[^/]*){3})/.*$
与第一个捕获组的内容。可以在ideone.com找到第二个的 PHP 示例。
你也可以使用循环:
result="";
for char c in URL:
if(c is a slash) count++;
if(count<4) result=result+c;
else break;