【问题标题】:Best way convert text with '&' into the variables将带有“&”的文本转换为变量的最佳方法
【发布时间】:2010-12-31 14:58:12
【问题描述】:

我有这段文字

"?foo=bar&foobar=barfoo"

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

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

谢谢。

【问题讨论】:

    标签: php arrays text variables


    【解决方案1】:

    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()
    编辑2:请记住,parse_str() 的行为取决于arg_separator.input 的值。您是否应该(无论出于何种原因)将其设置为“!” parse_string() 将为您的输入字符串返回 NULL。 例如

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

    打印NULL。但是……那将是一个相当奇怪的设置。

    【讨论】:

      【解决方案2】:

      这是一个 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 数组中。

      【讨论】:

        猜你喜欢
        • 2011-03-13
        • 1970-01-01
        • 2014-06-17
        • 1970-01-01
        • 2018-07-15
        • 2017-03-21
        • 2018-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多