我有一个字符串,一个文件路径,类似
$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);
如何在模式匹配的每个实例上运行替换?
答案 0 :(得分:6)
您可以使用
preg_replace('~[^/]+/~', "---/", $string);
// => ---/---/---/---/2017-20190Course-Schedule.pdf
请参阅PHP demo。
请参阅regex demo here。详细说明:
[^/]+
- 除/
/
- 正斜杠。请注意,由于使用了/
分隔符,因此无需转义~
。 preg_replace
函数用替换模式---/
替换所有非重叠事件,因此不需要使用重复捕获组(如在原始尝试中那样)。