Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка рекурсивом данных адресной строки. 
:(
    Опции темы
Zmiuko
  Дата 23.3.2009, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Проблема, что не могу подобрать хороший Паттерн.

Запрос в адресной строке выглядит следующим:

?mod=new&mc=mod&cm=to&page=12, допустим. 



Необходимо обработать функцией так чтобы получить стрку следующего вида

?file=mod-mc-cm-page-pr-new-mod-to-122.pl // Важно: где переменные какие угодно и сколько угодно

где названия Get-переменных идут в левую сторону от "-pr-", аих соответственные значения в правую и к концу строки прибавляется "2.pl"... 

Возможно ли применить к вышеуказанному запросу рекурсивную функцию, дабы не прибегать к разбору строки в массив и дальнейшей сортировке ключей, а затем при помощи implode обратно в строку?

Паттерн сложно подобрать, поскольку беспокоюсь о безопасности.

Борюсь с уменьшением нагрузки.
PM MAIL WWW ICQ Skype Jabber   Вверх
ksnk
Дата 23.3.2009, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



поторопился... :-(

Это сообщение отредактировал(а) ksnk - 23.3.2009, 08:56


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Zmiuko
Дата 23.3.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Цитата

поторопился... :-(

 smile 

Да ниче... у мну вапще нифига не выходит, какой бы рекурс не продумал бы.


PM MAIL WWW ICQ Skype Jabber   Вверх
enof
Дата 23.3.2009, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Код

<?php
$str = "?mod=new&mc=mod&cm=to&page=12";
$pattern = "#\??([^=&]*)=([^&]*)#iu";
preg_match_all($pattern, $str, $arr_matches);
$result = "?file=".implode("-",$arr_matches[1])."-pr-".implode("-", $arr_matches[2])."2.pl";
echo $result;
?>

Цитата(Zmiuko @  23.3.2009,  06:49 Найти цитируемый пост)
Паттерн сложно подобрать, поскольку беспокоюсь о безопасности.

чего именно боитесь?

Это сообщение отредактировал(а) enof - 23.3.2009, 14:54
PM MAIL ICQ Skype   Вверх
Zmiuko
  Дата 23.3.2009, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Дело в том, что при инкудинге кода, я в нем превращал ссылки функцией:

Код

function re_prav_url($u) {
            $str = substr($u, 1);
            $str2 = explode('&', $str);
                for($i=0;$i<count($str2);$i++) {
                    list($a0, $a1) = explode('=', $str2[$i]);
                    $aa[] = $a0;
                    $ab[] = $a1;
                }
            $str = '?file='.implode('-',$aa).'-pr-'.implode('-',$ab).'2.pl';
            return $str;
        }


создавая определенную нагрузку на сервер, поскольку использовал лишний цикл... 

Выходные же ссылки ?file=*2.pl я парсю функцией:

Код

    function prav_url($str) {
        if(trim(strtolower(strrchr($str, "."))) == ".pl") { $str = explode(".",$str); $str = $str['0']; }
        $arg = substr($str, -1);
        if($arg == '2') {
            $str = substr($str, 0, -1);
            $str = substr($str, 5);
            $str = explode('-pr-', $str);
            $str1 = explode('-', $str['0']);
            $str2 = explode('-', $str['1']);
            for($i=0;$i<count($str1);$i++) {
                $array[$str1[$i]] = $str2[$i];
            }
            return $array;
        } else {
            #$str = substr($str, 1);
            $str2 = explode('&', $str);
            for($i=0;$i<count($str2);$i++) {
                list($a0, $a1) = explode('=', $str2[$i]);
                $array[$a0] = $a1;
            }
            return $array;
        }
    }


Можно ли применить так же паттерн обратив ссылки обратно в исходные из file=mod-mc-cm-page-pr-new-mod-to-122.pl в mod=new&mc=mod&cm=to&page=12
PM MAIL WWW ICQ Skype Jabber   Вверх
enof
Дата 23.3.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(Zmiuko @  23.3.2009,  15:09 Найти цитируемый пост)
Можно ли применить так же паттерн обратив ссылки обратно в исходные из file=mod-mc-cm-page-pr-new-mod-to-122.pl в mod=new&mc=mod&cm=to&page=12 

Можно, только объясните, зачем все это?
PM MAIL ICQ Skype   Вверх
Zmiuko
Дата 23.3.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Да дело в том, что предаю ссылку скрипту на perl сервере smile Паттерн плохо подбираю (
PM MAIL WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0829 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.