Прошу помощи у знатоков в написании регулярного выражения. Необходимо заменить (preg_replace) ссылки вида: ?id=7&opt=map&s=3 на map.php?id=7&s=3
Или например, ?opt=map&id=7&s=3 на map.php?id=7&s=3.
Или, например, ?id=7&s=3&opt=map на map.php?id=7&s=3
Пожалуйста, помогите!!!
Спустя 11 часов, 57 минут, 19 секунд (6.12.2010 - 03:26) kirik написал(а):
Не вижу как красиво можно решить эту задачу регулярками.. Да и не нужно:
/// Вариант номер раз
echo str_replace(array('&opt=map', 'opt=map&'), array('', ''), '?id=7&s=3&opt=map');
/// Вариант номер два (длинный, но самый правильный)
$links = array(
'?id=7&opt=map&s=3',
'?opt=map&id=7&s=3',
'?id=7&s=3&opt=map',
);
foreach($links as &$link) {
parse_str(parse_url($link, PHP_URL_QUERY), $vars);
unset($vars['opt']);
$link = '?' . http_build_query($vars, '', '&');
}
unset($link);
print_r($links);