Jump to content
  • 0

Функция обновления параметров в урле


Victor Ananiev
 Share

Question

У меня вопрос таков: можно ли эту функцию оптимизировать, у меня такое чувство что я половину функций PHP переписал))

function form_vars($string='')
{
$formed='';
$vars_to_upd=explode('&', $string);
$vars_upd=array();
for($i=0;$i<sizeof($vars_to_upd);$i++)
{
$temp=explode('=', $vars_to_upd[$i]);
$vars_upd[$temp['0']]=$temp['1'];
}
$vars=explode('&', $_SERVER['QUERY_STRING']);
$new_vars=array();
for($i=0;$i<sizeof($vars);$i++)
{
$temp=explode('=', $vars[$i]);
$new_vars[$temp['0']]=$temp['1'];
}
foreach($new_vars as $key=>$value)
{
foreach($vars_upd as $skey=>$svalue)
{
if($key==$skey)
{
$new_vars[$key]=$svalue;
}
}
}
foreach($new_vars as $key=>$value)
{
foreach($vars_upd as $skey=>$svalue)
{
if($key==$skey)
{
unset($vars_upd[$skey]);
}
}
}
$last_arr=$new_vars+$vars_upd;
foreach($last_arr as $key=>$value)
{
$formed=$formed.'&'.$key.'='.$value;
}
$formed=substr($formed, 1);
return $formed;
}

Всем заранне спасибо))

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Спасибо, но она все это в переменные превращает, а я точных ключей не знаю, мне надо что бы все заменялось выбирая значения входных данных) То есть если я запущу parse_str 2 раза подряд то переменные то перетрутся) и будет все как надо, но имен переменных я не узнаю))

Edited by Victor Ananiev
Link to comment
Share on other sites

  • 0

Доки читать будем?

arr

If the second parameter arr is present, variables are stored in this variable as array elements instead.

$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

Link to comment
Share on other sites

  • 0

function form_vars($string='', $delete_str='')
{
$resuslt='';
parse_str($string, $vars);
parse_str($_SERVER['QUERY_STRING'], $old_vars);
foreach($old_vars as $key=>$value)
{
foreach($vars as $skey=>$svalue)
{
if($key==$skey)
{
unset($old_vars[$key]);
}
}
}
$res_arr=$old_vars+$vars;
parse_str($delete_str, $to_delete);
foreach($res_arr as $key=>$value)
{
foreach($to_delete as $skey=>$svalue)
{
if($key==$skey)
{
unset($res_arr[$key]);
}
}
}
foreach($res_arr as $key=>$value)
{
$result=$result.'&'.$key.'='.$value;
}
$result=substr($result, 1);
return $result;
}

Обновил, добавил удаление ненужных)

Link to comment
Share on other sites

  • 0

На сколько я понял ты хотел сказать так:

А у меня норамльно работает при установке PHP-расширения pecl_http. Подскажи, что я делаю не правильно?

А есть ли какая то функция которая выполняет именно то что мне надо?) или я сегодня ваще туплю...

Link to comment
Share on other sites

  • 0

Я сказал так, как хотел сказать и большинство наверняка поняла о чем речь.

Но для тех кто не понимает, скажу ясно и понятно: эта функция работает нормально при установке соответствующего расширения. И если у тебя не работает, значит ты что-то делаешь не так.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy