替换所有字符,直到反斜杠n次

时间:2018-03-28 20:53:37

标签: php regex string

我有一个字符串,一个文件路径,类似

$string = "customer-service/tweep/cs/gsergsergrs/2017-20190Course-Schedule.pdf"

我想用3个破折号替换反斜杠前的所有字符,以便它返回:

$string = ---/---/---/---/2017-20190Course-Schedule.pdf

我已尝试使用此preg_replace模式,但它返回---/2017-20190Course-Schedule.pdf

preg_replace( "/(.+\/)+/", "---/", $string);

如何在模式匹配的每个实例上运行替换?

1 个答案:

答案 0 :(得分:6)

您可以使用

preg_replace('~[^/]+/~', "---/", $string);
// => ---/---/---/---/2017-20190Course-Schedule.pdf

请参阅PHP demo

请参阅regex demo here。详细说明:

  • [^/]+ - 除/
  • 以外的1个或多个字符
  • / - 正斜杠。

请注意,由于使用了/分隔符,因此无需转义~preg_replace函数用替换模式---/替换所有非重叠事件,因此不需要使用重复捕获组(如在原始尝试中那样)。