我需要将/ some / string / page / 45替换为/ some / string。这就是我正在使用它:
preg_replace('~((?<=\?)page/\d+&?|&page/\d+)~i', '', $this->__tmp)
但它不适合我。我尝试使用在线工具生成我需要的正则表达式,但这对我来说太难了......我需要替换/ page /(任意数字)
我也生成了这个:
preg_replace('~(page/\d+)~i', '', $this->__tmp);
它看起来很好,但我不知道它是否正确。
答案 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 )
希望这有帮助!