Php 正则表达式删除URL中第四个斜杠后的所有内容
我在PHP中使用友好的URL路径,其形式如下:Php 正则表达式删除URL中第四个斜杠后的所有内容,php,regex,substr,strpos,Php,Regex,Substr,Strpos,我在PHP中使用友好的URL路径,其形式如下: /2011/09/here-is-the-title /2011/09/here-is-the-title/2 我需要标准化这些URL路径,以删除4斜杠之后的任何内容,包括斜杠本身。第四斜杠后的值有时是数字,但也可以是任何参数 我该怎么做呢?我想regex可以处理,但我很糟糕。我还认为结合使用strpos和substr可能能够处理它,但不能完全解决它。如果您的正则表达式实现支持任意长度的查找后断言,您可以替换它 (?<=^[^/]*(/[^
/2011/09/here-is-the-title
/2011/09/here-is-the-title/2
我需要标准化这些URL路径,以删除4斜杠之后的任何内容,包括斜杠本身。第四斜杠后的值有时是数字,但也可以是任何参数
我该怎么做呢?我想regex可以处理,但我很糟糕。我还认为结合使用
strpos
和substr
可能能够处理它,但不能完全解决它。如果您的正则表达式实现支持任意长度的查找后断言,您可以替换它
(?<=^[^/]*(/[^/]*){3})/.*$
包含第一个捕获组的内容。如果您的正则表达式实现支持任意长度的look-behind断言,您可以在中找到第二个PHP示例。
(?<=^[^/]*(/[^/]*){3})/.*$
包含第一个捕获组的内容。第二个PHP示例可在中找到。您可以使用函数:
$parts = explode('/', '/2011/09/here-is-the-title/2');
$output = implode('/', array_slice($parts, 0, 4));
您可以使用以下功能:
$parts = explode('/', '/2011/09/here-is-the-title/2');
$output = implode('/', array_slice($parts, 0, 4));
替换
%^((/[^/]*){3}).*%g
1美元
有关实时示例,请参见
%^((/[^/]*){3}).*%g
1美元
请参阅,以获取一个实时示例,您也可以使用循环:
result="";
for char c in URL:
if(c is a slash) count++;
if(count<4) result=result+c;
else break;
result=”“;
对于URL中的字符c:
如果(c是斜杠)计数++;
如果(count您也可以使用循环:
result="";
for char c in URL:
if(c is a slash) count++;
if(count<4) result=result+c;
else break;
result=”“;
对于URL中的字符c:
如果(c是斜杠)计数++;
如果(我们谈论的是哪种实现语言?正则表达式并不复杂,但使用它删除内容的语法取决于语言。我们谈论的是哪种实现语言?正则表达式并不复杂,但使用它删除内容的语法取决于语言。另一个好主意!再次……我想知道s比正则表达式快。@Sardine:您可以自己尝试对其进行基准测试并找出:-)我认为这很有可能比ReXEX快。“PaluuuMaZue-这是在待办事项清单上!我想我会问,如果有人知道的话。谢谢!这似乎是最快的方法!谢谢!又一个好主意!再一次……我想知道这是否比正则表达式快。”沙丁恩:你可以试着对它自己做一个基准,然后找出:我认为这很有可能比ReXEX快。@ PaluuuMaZue-这是在待办事项列表上!我想我会问,如果有人知道的。谢谢!这似乎是最快的方法!谢谢!