- rtrim: documentation ( source)
- preg_replace: documentation ( source)
<?php
$strings = array('url/?page=2&filter=value',
'url/?page=2',
'url/?filter=value&page=2',
'url/?filter=value&page=2&filter2=value');
foreach($strings as $string){
echo rtrim(preg_replace('/([?&])page=[^&]*&?/', '$1', $string), '&?') . PHP_EOL;
}