使用php替换css中的前导点和斜杠

时间:2012-11-24 18:31:58

标签: php regex replace

如果我有以下任何路径

../../../filename.txt
../../filename.txt
../filename.txt

如何用一个'../'代替任何数量的'../',例如

../../../filename.txt
or
../../filename.txt

变为

../filename.txt

然而,这些路径位于一个css字符串中,我不想将字符串分开来执行此操作,我只想将'../'替换为它们。

由于

3 个答案:

答案 0 :(得分:4)

如果您记得逃离时期,preg_replace应该很容易:

$result = preg_replace('~(?:\.\./)+~', '../', $input);

匹配../的一个或多个连续出现,只需回写../

答案 1 :(得分:2)

使用正则表达式

(\.\./)+

并将其替换为

../


+匹配前一个字符或第1组到多次

答案 2 :(得分:0)

RegEx的替代方案(主要供参考,@ m.buettner有最佳答案)。

$fn = '../../../filename.txt';
$fn_parts = (array_reverse(explode("../", $fn)));
echo "../" . $fn_parts[0];

ideone

或./如果没有。

$fn = 'filename.txt';
$fn_parts = (array_reverse(explode("../", $fn)));
echo (count($fn_parts) > 1 ? "../" : "./") . $fn_parts[0];

ideone