Как извлечь конкретные переменные из строки? - PullRequest
2 голосов
/ 29 апреля 2010

допустим, у меня есть следующее:

$vars="name=david&age=26&sport=soccer&birth=1984";

Я хочу превратить это в реальные переменные php, но не во все. К примеру, функции, которые мне нужны:

$thename=getvar($vars,"name");
$theage=getvar($vars,"age");
$newvars=cleanup($vars,"name,age"); // Output $vars="name=david&age=26"

Как я могу получить только те переменные, которые мне нужны. И как я могу очистить $ Vars от других переменных, если это возможно?

Спасибо

Ответы [ 2 ]

8 голосов
/ 29 апреля 2010

Я бы использовал parse_str() и затем манипулировал массивом.

$vars="name=david&age=26&sport=soccer&birth=1984";
parse_str($vars, $varray);

$thename = $varray["name"];
$theage = $varray["age"];
$newvars = array_intersect_key($varray, 
    array_flip(explode(",","name,age")));
3 голосов
/ 29 апреля 2010

Вы можете сделать что-то вроде:

function getvar($arr,$key) {
    // explode on &.
    $temp1 = explode('&',$arr);

    // iterate over each piece.
    foreach($temp1 as $k => $v) {
        // expolde again on =.
        $temp2 = explode('=',$v);

        // if you find key on LHS of = return wats on RHS.
        if($temp2[0] == $key)
            return $temp2[1];   
    }
    // key not found..return empty string.
    return '';
}

и

function cleanup($arr,$keys) {
    // split the keys string on comma.
    $key_arr = explode(',',$keys);

    // initilize the new array.
    $newarray = array();

    // for each key..call getvar function.
    foreach($key_arr as $key) {
        $newarray[] = $key.'='.getvar($arr,$key);
    }

    // join with & and return.
    return implode('&',$newarray);
}

Вот рабочий пример.

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