选择爆炸或其他功能内容到2个标签

时间:2013-03-11 03:21:51

标签: php explode

我如何使用php分隔这个元素我已经进入文件

例如:

##cat 1##
**
element 1
element 2
element 3
**

##cat 2##
**
element 1
element 2
element 3
**

##cat 3##
**
element 1
element 2
element 3
**

我在很多时间看到php的手册和我尝试爆炸等没有得到好的结果,它可以用php发送简单循环运行所有这些内容并在每种情况下将内容分成##或**并显示每个元素分开?

我尝试这样做,但事情不好,因为我不能这样做,并尝试多次foreach,爆炸,bucle等等,并始终得到相同的结果,并显示所有没有每个元素

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题。如果您想获取上面的输入并产生以下内容:

Array
(
    [##cat 1##] => Array
        (
            [0] => element 1
            [1] => element 2
            [2] => element 3
        )

    [##cat 2##] => Array
        (
            [0] => element 1
            [1] => element 2
            [2] => element 3
        )

    [##cat 3##] => Array
        (
            [0] => element 1
            [1] => element 2
            [2] => element 3
        )
)

试试这个:

$input_text =<<<INPUT_TEXT
##cat 1##
**
element 1
element 2
element 3
**

##cat 2##
**
element 1
element 2
element 3
**

##cat 3##
**
element 1
element 2
element 3
**
INPUT_TEXT;

$output = array();
$current = NULL;
foreach( explode( "\n", $input_text ) as $line )
{
    $line = trim( $line );
    if( empty( $line ) )
    {
        continue;
    }
    if( substr( $line, 0, 2 ) == '##' )
    {
        $current = trim( $line );
        continue;
    }
    if( substr( $line, 0, 2 ) == '**' )
    {
        continue;
    }
    if( !empty( $current ) )
    {
        $output[$current][] = $line;
    }
}
print_r( $output );