在PHP中使用标记将字符串存储到数组

在PHP中使用标记将字符串存储到数组,php,string,Php,String,我需要帮助。如何使用标记将字符串拆分为数组 输入: <aa> test1 </aa> test2 <aa> test3 </aa> test4 .... test1test2test3test4。。。。 输出: arr[0] = <aa> test1 </aa>; arr[1] = test2; arr[2] = <aa> test3 </aa>; arr[3] = test4; arr[0]=

我需要帮助。如何使用标记将字符串拆分为数组

输入:

<aa> test1 </aa> test2 <aa> test3 </aa> test4 ....
test1test2test3test4。。。。
输出:

arr[0] = <aa> test1 </aa>;
arr[1] = test2;
arr[2] = <aa> test3 </aa>;
arr[3] = test4;
arr[0]=test1;
arr[1]=test2;
arr[2]=test3;
arr[3]=test4;

提前谢谢

使用半诡计多端的正则表达式的超强威力

$string = "<aa> test1 </aa> test2 <aa> test3 </aa> test4";
$arr = preg_split('/(<[0-9a-zA-Z_]+>[^<]*<\/[0-9a-zA-Z_]+>)/', $string, NULL, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$string=“test1 test2 test3 test4”;
$arr=preg_split('/([^这可以使用

我早些时候回答了这个问题,但它被否决了,因为有人认为这样做是不可能的,嗯,这是可能的。你只需要构建自己的数组,但首先要做的是

首先,我们有您提到的字符串:

$string = "<aa> test1 </aa> test2 <aa> test3 </aa> test4";
我们有一个数组$e,它包含所有的拆分,可以得到如下结果:

echo $e[0]. $e[1]. $e[2]. "<br>";
echo $e[3]. "<br>";
echo $e[4]. $e[5]. $e[6]. "<br>";
echo $e[7]. "<br>";
echo$e[0]。$e[1]。$e[2]。“
”; 回声$e[3]。“
”; 回声$e[4]。$e[5]。$e[6]。“
”; 回声$e[7]。“
”;
输出为:

<aa> test1 </aa>;
test2;
<aa> test3 </aa>;
test4;
test1;
测试2;
测试3;
试验4;
但这是相当混乱的,可以理解。但是,您可以遍历数组并按照自己的意愿构建单个数组:

$result = array();
for($i = 0; $i < sizeof($e) ; $i++)
{
    if($i % 2 == 0)
    {
        $tempRes = $e[$i]. $e[$i+1]. $e[$i+2];
    }
    else
    {
        $tempRes = $e[$i+2];
        $i+=2;
    }
    array_push($result, $tempRes);
}
$result=array();
对于($i=0;$i
输出是相同的


这可能不是最好的方法,但它是有效的。

我知道这可以用preg_split来完成,但是为什么它应该被否决呢?我如何设置模式来修复{aa}和{/aa}?:D谢谢!/({aa+}[^{]*{\/aa+})/如果…assdssdsdaddon没有键入“aa”或“sd”呢或者随便什么。原始示例允许任何以
开头和结尾的标记/元素使用字母数字字符和下划线的任意组合。如果要检查大括号({})而不是尖括号(),只需更改regex表达式中的方括号,而不更改其他内容。那么…您是否只检查过1个特定元素/tag-
?是的,在这个站点中尝试了此项()“{aa}test{/aa}test sasdas{asd}{aa}test{/aa}test with”/({aa}[^
$result = array();
for($i = 0; $i < sizeof($e) ; $i++)
{
    if($i % 2 == 0)
    {
        $tempRes = $e[$i]. $e[$i+1]. $e[$i+2];
    }
    else
    {
        $tempRes = $e[$i+2];
        $i+=2;
    }
    array_push($result, $tempRes);
}