正则表达式删除/ page / 1

时间:2015-11-03 13:53:27

标签: php regex

我需要将/ some / string / page / 45替换为/ some / string。这就是我正在使用它:

preg_replace('~((?<=\?)page/\d+&?|&page/\d+)~i', '', $this->__tmp)

但它不适合我。我尝试使用在线工具生成我需要的正则表达式,但这对我来说太难了......我需要替换/ page /(任意数字)

我也生成了这个:

preg_replace('~(page/\d+)~i', '', $this->__tmp);

它看起来很好,但我不知道它是否正确。

2 个答案:

答案 0 :(得分:4)

<?php

$str = 'asd/qwe/page/123';

$result = preg_replace('(/page/\d+)', '', $str);

var_dump($result);

结果:

string(8) "asd/qwe"

如果你想删除第一个和结束斜杠(不需要第一个和最后一个斜杠,在字符串的开头和字符串的结尾支持许多斜杠):

<?php

$str = '////asd/qwe/page/123////';

$result = preg_replace('~^(/)*(.*)(/page/\d+)(/)*~', '$2', $str);

var_dump($result);

答案 1 :(得分:0)

如果你不介意在preg_replace上使用preg_match,你可以这样做:

<?php

$regex = "/(?!^\/).*(?=\/page)/";
$regStr = "/some/string/page/45";

preg_match($regex, $regStr, $results);

print_r($results);

?>

结果将是:

Array ( [0] => some/string )

希望这有帮助!

相关问题