Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式删除URL中第四个斜杠后的所有内容_Php_Regex_Substr_Strpos - Fatal编程技术网

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可能能够处理它,但不能完全解决它。如果您的正则表达式实现支持任意长度的查找后断言,您可以替换它 (?<=^[^/]*(/[^

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

/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-这是在待办事项列表上!我想我会问,如果有人知道的。谢谢!这似乎是最快的方法!谢谢!