Php 使用分解或其他功能内容选择2个标记

Php 使用分解或其他功能内容选择2个标记,php,explode,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手册,我尝试了explode等,但没有得到好的结果,有可能用php发送简单的循环运行所有这些内容,并在每种情况下将内容分离到##或**中,并显示分离的

如何使用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手册,我尝试了explode等,但没有得到好的结果,有可能用php发送简单的循环运行所有这些内容,并在每种情况下将内容分离到##或**中,并显示分离的每个元素

我试着这样做,但有些事情做得不好,因为我不能这样做,我用foreach、explode、bucle for等试了很多次,总是得到相同的结果,每个元素都没有显示出来


谢谢你的帮助

我不确定我是否理解你的问题。如果您希望获取上述输入并生成以下内容:

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 );

$input\U text=此内容进入文本文件,其思想是将每个组和每个日期分开,在“##”的情况下,这表示一个类别,在类别中我有元素,这些元素使用其他字符分开,结果必须是:类别1:元素1,2,3,类别2,元素1,2,3。。。。。等等,谢谢。你能根据你的需要调整我的解决方案吗?如果不是,您是否会发布一个示例,说明您希望输出文件的样子?