あなたの質問には、page = xxをURLの から削除してください。
午後には正規表現の匂いのようなものはありません。だから私はこれに刺し傷があり、次はそのトリックをするべきです。
私はそれがよりスマートに実行できると確信していますが、それはあなたを動かすことになります。
<?php
/*
* My urls can be
* pagename?page=2 or
* pagename?param=235235&page=2 or
* pagename?page=10¶m=5431 or etc.
*/
function remove_page_from_url($url){
// For the case where ?page=xx¶m
if (preg_match('/\?page=[0-9]{0,}&/',$url)){
$url = preg_replace('/&/','?',$url,1); // Only replace the 1st one.
}
return preg_replace('/[\?|&]page=[0-9]{0,}/','',$url);
}
// The Testing during development
//Case 1: This works
$url = 'pagename?page=10';
echo remove_page_from_url($url);
echo '<br>';
//Case 2: This works
$url = 'pagename?param=235235&page=2';
echo remove_page_from_url($url);
echo '<br>';
//Case 3: This works
//This messes things up as we also have to change a & to a ?
$url = 'pagename?page=10¶m=5431';
echo remove_page_from_url($url);
echo '<br>';
//Case 4: This Works
//This messes things up as we also have to change a & to a ? but only the first one.
$url = 'pagename?page=10¶m=5431&something=2';
echo remove_page_from_url($url);
echo '<br>';
したがって、最も簡単なケースから始めて、あなたの方法を試してみてください。
/*
The Results
pagename?page=10
=> pagename
pagename?param=235235&page=2
=> pagename?param=235235
pagename?page=10¶m=5431
=> pagename?param=5431
pagename?page=10¶m=5431&something=2
=> pagename?param=5431&something=2
*/
だから、あなたが興味を持っている機能remove_page_from_url($url)
内のコードです。