2015-11-03 73 views
0

我需要將/ some/string/page/45僅替換爲/ some/string。這是我用它︰正則表達式刪除/頁/ 1

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

但它不適合我。我試着在網上的工具來生成正則表達式,我需要,但它太難爲我..我需要更換/頁/(任意數量)

我也已經產生了這樣一條:

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

,它看起來作品很好,但我不知道它是否正確。

+0

你只是想刪除最後一個'/'後的所有內容嗎? –

+0

例如我有'some/string/more/options/page/2',我只需要'some/string/more/options' –

回答

4
<?php 

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

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

var_dump($result); 

結果:

<?php 

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

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

var_dump($result); 

string(8) "asd/qwe" 

如果你想刪除首末斜槓(不要求第一和最後一個斜槓,在字符串的開始和結束字符串支持了許多斜槓)

+0

謝謝,那也適用。有沒有任何選項可以擴展它以從字符串中刪除第一個和最後一個斜槓?對我來說不是必要的,但也許別人會發現它作爲答案 –

+0

已添加到答覆 –

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) 

希望這有助於!