我有这个文字
“?富=栏&安培; foobar的= barfoo”
将此文本转换为变量的最佳方法是什么?像这样:
<?php
echo $q['foo']; //bar
echo $q['foobar']; //barfoo
?>
感谢。
答案 0 :(得分:8)
请参阅http://docs.php.net/parse_str和http://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。
e.g。
ini_set('arg_separator.input', '!');
$s = "foo=bar&foobar=barfoo";
var_dump(parse_str($s));
打印NULL
。但是......这将是一个相当奇怪的设置。
答案 1 :(得分:1)
这是一个url所以如果你从url源获取它们应该自动在$ _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数组中。