перестановка параметров в url

Тема в разделе "Регулярные выражения", создана пользователем krobol, 1 мар 2009.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    подскажите, как из строки:
    $s1 = "http://site.com?p1=234p1asd&p2=34p245dw";


    сделать строку ($s2 = ???:(
    print $s2; // "http://site.com?p2=34p245dw&p1=234p1asd"

    ?
     
  2. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    чето непонятно
    еще раз покажи исходный материал и голяк без коментов то что хочешь получить, попробуем подсказать.
     
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
  4. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    есть:
    Код:
    http://site.com?p1=p1&p2=p2
    http://site.com?p0=p0&p1=p1&p2=p2
    нужно переставить в конец p1:
    Код:
    http://site.com?p2=p2&p1=p1
    http://site.com?p0=p0&p2=p2&p1=p1
    спасибо за
    http://ru.php.net/manual/ru/function.parse-str.php!

    но потом нужно в строке параметров опять же переставить.

    Переставить, чтобы параметр (например id) поставить на последнее место и добавить в нему +and+1=0

    в notepad++ есть замена с помощью регулярных выражений:
    ^(.*p1.*)(\&.*)$
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    И в чём проблема или лень совсем одолела и хочется чтоб другие всё сделали за тебя?
    Какая разница между
    index.php?id=1+and+1=0&cat=3
    и
    index.php?cat=3&id=1+and+1=0
    ???
    Для принимающего скрипта побарабану (если там специально не заморачивались с проверкой порядка аргументов).
     
  6. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    тогда я разбиваю строку параметров с помощью parse_str,

    хоть это уже не относится к regexp, дайте подсказку: как узнать, каким номером в массиве будет параметр с именем id ?
     
  7. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    PHP:
    $str "cat=3&id=1+and+1=0";
    parse_str($str$output);
    print_r($output)
    получишь
    Код:
    Array
    (
        [cat] => 3
        [id] => 1 and 1=0
    )
    всё просто и узнавать ничего не надо ;)
     
  8. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    нет, мне нужно в строке параметр id переставить в конец и добавить к нему +and+1=0

    PHP:
    $url "http://site.com?p0=p0&p1=p1&p2=p2";
    $aurl parse_url($url);
    $param parse_str($aurl["query"]);
    $param["id"] .= "+and+1=0";
    но как проверить наличие параметра id, ID, Id, ItemID, gid
    и поставить его в конец?
     
  9. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    1. зачем тебе параметр именно в конце?
    2. тебя научить что такое оператор if ?
    3. тебя научить собрать массив в строку ?
    что из этого?
     
  10. black.cat

    black.cat

    Регистр.:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    32
    в самом начале приведите строку к нижнему ригистру и будет вам id маленькими буками.

    поставить в конец:
    удаляете элемент массива с key=id а потом собираете массив в строку и добавляете в конец что хотели.

    Вам же скажали что порядок переменных в post запросе в 99% случаев не важен.
    Уважьте дяду, расскажите зачем такое извращение?
     
Статус темы:
Закрыта.