【问题标题】:how to turn texts to be array by line with PHP如何使用PHP将文本逐行转换为数组
【发布时间】:2011-07-08 02:36:42
【问题描述】:
aaaaaaaaaaaa
bbbbbbbbbbbbbb
ccccccccccccccccccc
dddddddddddddddddd

我想变成这样的在线数组

array(
0=>'aaaaaaaaaaaa',
1=>'bbbbbbbbbbbbbb',
2=>'ccccccccccccccccccc',
3=>'dddddddddddddddddd'

)

用php怎么做?

【问题讨论】:

    标签: php arrays text


    【解决方案1】:
    $string = "aaaaaaaaaaaa 
    bbbbbbbbbbbbbb 
    ccccccccccccccccccc 
    dddddddddddddddddd";
    $array = explode("\n", $string);
    

    【讨论】:

    • 这仍然会在 HTML 中显示为单行,你需要 "$array = explode("\n
      ",$string)
    • 它不会特别显示任何东西;它将创建一个包含行的数组。另外,当我回答时,那些
      都不在。
    【解决方案2】:
    $arr = explode("\n", $str); // $str contains your text
    

    【讨论】:

    • explode(PHP_EOL, $str); 使其与平台无关。但是,如果他是直接从文件中读取它,他应该真正使用 PHP 中的file() 函数。
    • 假设换行符是行尾。
    【解决方案3】:

    以下关于行尾(换行符或回车)非常灵活,或者可以修改为包含任何空格。

    $lines = preg_split('/[\r\n]/', $text);
    

    但是,如果您知道以\n(换行符)结尾的行,我会推荐explode(),因为它可以避免正则表达式开销。

    $lines = explode("\n", $text);
    

    详细了解preg_split()explode()

    【讨论】:

    • 我一直不太擅长 Pearl 正则表达式,+1 理解它们!
    【解决方案4】:
    $myArray = explode($your_seperator_string, $string_to_be_parsed_to_array);
    

    PHP 的explode(string $delimiter , string $string [, int $limit ]) 函数将string 拆分为delimiter

    【讨论】:

    • 假设换行符是行尾。
    【解决方案5】:

    在 PHP 中,新行由\n 表示。因此,您可以使用explode() 在每个新行之后创建一个数组。

    $string = "aaaaaaaaaaa
               bbbbbbbbb
               cccccccccccccccc
               ddddddddddd"
    
    $string = "aaaaaaaaaaa\nbbbbbbbbb\ncccccccccccccccc\nddddddddddd"
    
    //Both $string variables are the same
    
    //Make sure that \n is in double quotes, single quotes WILL NOT WORK!!!
    $array = explode("\n", $string);
    

    给你!随意使用array_map() 和其他与\n 类似的功能来达到预期的效果。

    【讨论】:

      【解决方案6】:

      查看 split() 方法。 PHP:split Manual

      $myArray = split("[\n|\r]", $string);
      

      根据创建原始字符串的系统,您可能需要也可能不需要 \r。

      【讨论】:

      • 自 PHP 5.3.0 起,该函数已被弃用。强烈建议不要依赖此功能。 preg_split() 是推荐的替代方法。
      【解决方案7】:

      DEMO

      <?php
      
        $sample = "aaaaaaaaaaaa
      bbbbbbbbbbbbbb
      ccccccccccccccccccc
      dddddddddddddddddd";
      
      $ary = array_map("trim",explode("\n", $sample));
      
      var_dump($ary);
      

      输出:

      array(4) {
        [0]=>
        string(12) "aaaaaaaaaaaa"
        [1]=>
        string(14) "bbbbbbbbbbbbbb"
        [2]=>
        string(19) "ccccccccccccccccccc"
        [3]=>
        string(18) "dddddddddddddddddd"
      }
      

      我使用 trim 以防它们被 \r\n 或 \n 分开。也可以使用正则表达式,但我想再提供一种解决方案,array_map 是可选的。

      【讨论】:

        【解决方案8】:
        $output_array = explode("\n<br />\n", $input_string);
        

        【讨论】:

          猜你喜欢
          • 2012-05-01
          • 2011-01-08
          • 2017-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-07
          • 1970-01-01
          相关资源
          最近更新 更多