如何从多行字符串生成数组?

时间:2017-07-27 03:36:46

标签: php arrays

我的字符串是这样的:

$brazil = "Afonso Cláudio
Água Doce do Norte
Águia Branca";

我想将此字符串拆分为如下数组:

Brazil    (
    [0] => "Afonso Cláudio"
    [1] => "Água Doce do Norte"
    [2] => "Águia Branca"
)

2 个答案:

答案 0 :(得分:1)

由于可能会在换行符上爆炸(),但此解决方案的用处有限,因为它取决于您的平台使用的字符。一行可以使用以下字符中的一个或组合终止:换页(" \ f"),回车(" \ r"),换行符(&#34) ; \ n&#34)。以下代码相应地拆分$ brazil中包含的字符串值,如下所示:

       $(document).ready(function(){
            var current =  0;

            $('.add').click(function(){
                current += 4;
                $('.box').html(current);
            });
        });

请参阅live code

使用此正则表达式可以获得相同的结果:<?php $brazil = "Afonso Cláudio Água Doce do Norte Águia Branca"; $arr = preg_split("/[\f\r\n]+/",$brazil ); var_dump($arr); ;见here

有关详细信息,请参阅preg_split()

返回使用explode(),而不是硬编码换行符,使用内置常量PHP_EOL,如下所示:

"/\R/"

请参阅demo

PHP_EOL是一个内置常量,旨在匹配操作系统用于终止行的任何字符。

有用的资源:Escape SequencesPHP_EOLWhy You Should use PHP_EOL

答案 1 :(得分:0)

要做到这一点,你需要简单地将你的字符串分成多行。为此,您需要使用explode()方法将字符串除以某个字符。

在您的情况下,您希望将字符串除以新行。要做到这一点,你需要这个:

$result = explode("\n", $brazil)
  

\n是代表新行的escape character

该方法将返回此数组:

array(3) {
  [0]=>
  string(16) "Afonso Cláudio
"
  [1]=>
  string(20) "Água Doce do Norte
"
  [2]=>
  string(13) "Águia Branca"
}

注意:唯一剩下的问题是你仍然在每个字符串的末尾都有换行符。您可以解决这个问题,即从数组中的每个字符串中删除最后一个字符。有关如何执行此操作的详细信息,请参阅this question