2010-04-29 3 views
2

допустим у меня есть следующие:Как извлечь определенные переменные из строки?

$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 от других переменных, если это возможно?

Благодаря

ответ

3

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

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); 
} 

Here is a working example.

+0

Спасибо, связка, это именно то, что я ищу! – Ryan

8

я хотел бы использовать 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"))); 
+0

Это тоже хорошо +1 – Ryan

+1

Это лучший ответ – SeanJA

Смежные вопросы