代码之家  ›  专栏  ›  技术社区  ›  Luca Filosofi

php regex-在换行符处按preg_拆分的文本到数组

  •  4
  • Luca Filosofi  · 技术社区  · 14 年前

    编辑:

    需要有关拆分数组的帮助

    数组示例:

     array (
    
               [0] =>
                :some normal text
                :some long text here, and so on... sometimes 
                i'm breaking down and...
                :some normal text
                :some normal text
            )
    

    好的,现在用

    preg_split( '#\n(?!s)#' ,  $text );
    

    我得到

    [0] => Array
            (
                [0] => some normal text
                [1] => some long text here, and so on... sometimes
                [2] => some normal text
                [3] => some normal text
            )
    

    我想要这个:

    [0] => Array
            (
                [0] => some normal text
                [1] => some long text here, and so on... sometimes i'm breaking down and...
                [2] => some normal text
                [3] => some normal text
            )
    

    什么 正则表达式 可以得到整行,也可以在换行时拆分!?

    5 回复  |  直到 10 年前
        1
  •  7
  •   Milan BabuÅ¡kov    14 年前

    以下是一个有效的示例,即使字符串中嵌入了冒号字符(但不是行首):

    $input = ":some normal text
    :some long text here, and so on... sometimes
    i'm breaking: down and...
    :some normal text
    :some normal text";
    
    $array = preg_split('/$\R?^:/m', $input);
    print_r($array);
    

    结果:

    Array
    (
        [0] => some normal text
        [1] => some long text here, and so on... sometimes
               i'm breaking: down and...
        [2] => some normal text
        [3] => some normal text
    )
    
        2
  •  21
  •   Tgr    14 年前

    “换行符”定义错误。Windows仅使用CR+LF(\r\n)、Linux LF(\n)、OSX CR(\r)。

    在preg_uux正则异常中有一个鲜为人知的特殊字符\r,它与这三个异常都匹配:

    preg_match('/^\R$/', "\r\n"); // 1
    
        3
  •  2
  •   powtac    12 年前

    file() 将文件读取到数组中。

        4
  •  0
  •   Jonathan    10 年前

    如果在:字符..上拆分数组。

    print_r(preg_split('/:/', $input));
    
        5
  •  -2
  •   Amy B    14 年前
    $lines = explode("\n", $text);