【问题标题】:Explode and Trim in one line with PHP [duplicate]用PHP在一行中爆炸和修剪[重复]
【发布时间】:2014-03-25 17:29:39
【问题描述】:

我从文本文件中读取并分配变量,就好像它们是带有列表的数组一样。我通过在换行符上爆炸来做到这一点。

但是,我还想修剪输入两侧的任何空白。根据我的理解和测试,这正是 trim() 所做的。

我想将其缩短,以减少重复性并更易于阅读。

$config = file_get_contents('scripts/secure/config.txt');  
list($host, $dbname, $username, $password) = explode ("\n", $config);

$host = trim($host); 
$dbname = trim($dbname); 
$username = trim($username); 
$password = trim($password);  

我尝试了几种不同的方法,但似乎都没有奏效。我上面的确实工作,但我正在寻找一种单线方法。

【问题讨论】:

  • 我觉得我可以在最后添加一些带有爆炸的东西,以便将所有内容合二为一。像 "explode ("\n", trim($config); 这在视觉上对我来说没有意义。edit我试过这个,但它没有用。

标签: php parsing explode trim


【解决方案1】:

我回答here有一个更简单的方法。

使用array_map:

list($host, $dbname, $username, $password) = array_map('trim', explode("\n", $config));

【讨论】:

    【解决方案2】:

    使用preg_split()

    list($host, $dbname, $username, $password) = preg_split("/\\s*\\n\\s*/",trim($config));
    

    【讨论】:

      【解决方案3】:

      我相信这足以回答我的问题。除非有人能想出一些东西,否则您实际上可以保存变量名,而不必重新命名它们(这太棒了)。

      我这样做了。

      $config = file_get_contents('scripts/secure/config.txt');  
      $configData = array_map('trim', explode("\n", $config));  
      

      只需按数组中的位置引用我的数据。我知道它应该在哪里,所以这很有效。

      这里的帖子特别帮助我形成了我的答案。

      How can I explode and trim whitespace?

      我仍然想在一行中按名称使用变量。如果有人知道如何,那么我会给你积分。

      谢谢

      【讨论】:

        【解决方案4】:

        这样的? :

        $config_names = array("host", "dbname", "username", "password");
        $config = file_get_contents('scripts/secure/config.txt');   
        
        $data = array_combine($config_names), array_map("trim", explode ("\n", $config)));
        foreach($data as $k => $v){
          $$k = $v;
        }
        
        print $host.":".$dbname.":".$username.":".$password;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-18
          • 2016-01-18
          • 1970-01-01
          • 2012-04-06
          • 1970-01-01
          • 2011-04-23
          相关资源
          最近更新 更多