使用'&'转换文字的最佳方式进入变量

时间:2010-01-01 15:10:59

标签: php arrays text variables

我有这个文字

“?富=栏&安培; foobar的= barfoo”

将此文本转换为变量的最佳方法是什么?像这样:

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

感谢。

2 个答案:

答案 0 :(得分: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。 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数组中。