2010-01-01 12 views
1

我有了這個文本最佳方式轉換與「和」文成變量

「?富=酒吧& FOOBAR = barfoo」

什麼是這個文本變量轉換的最佳方式?像這樣:

<?php 
echo $q['foo']; //bar 
echo $q['foobar']; //barfoo 
?> 

謝謝。

回答

8

看到http://docs.php.net/parse_strhttp://docs.php.net/parse_url

$s = "?foo=bar&foobar=barfoo"; 
parse_str(parse_url($s, PHP_URL_QUERY), $q); 
var_dump($q); 

打印

array(2) { 
    ["foo"]=> 
    string(3) "bar" 
    ["foobar"]=> 
    string(6) "barfoo" 
} 

編輯:如果您知道該字符串始終具有形式 x = y ...您可能想要跳過parse_url()並使用substr()來代替。
edit2:請記住,parse_str()的行爲取決於值arg_separator.input。你應該把它(無論什麼原因)設置爲'!' parse_string()將爲您的輸入字符串返回NULL。 例如

ini_set('arg_separator.input', '!'); 
$s = "foo=bar&foobar=barfoo"; 
var_dump(parse_str($s)); 

打印NULL。但是......這將是一個相當奇怪的設置。

1

嗯,這是一個網址,所以如果你從網址源獲得它們,它們應該自動在$ _GET ['foo']和$ _GET ['bar']中,但如果它只是一個文本字符串,你可以這樣做:

$string = "?foo=bar&foobar=barfoo"; 
$string = str_replace('?', '', $string); 
$params = explode('&', $string); 

foreach($params as $key=>$value) 
{ 
    $data = explode('=', $value); 
    $_GET[$data[0]] = $data[1]; 
} 

而你所有的變量都在$ _GET數組中。