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


store string to array using tags in PHP

需要帮助。如何使用标签分割字符串到数组?

输入:

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

arr[0] = <aa> test1 </aa>;
arr[1] = test2;
arr[2] = <aa> test3 </aa>;
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);

可以使用explosion

我之前回答过这个问题,但是它被否决了,因为有人认为这样做是不可能的,嗯,这是可能的。你只需要构造你自己的数组,但重要的事情先做。

首先,我们有你提到的这个字符串:

$string = "<aa> test1 </aa> test2 <aa> test3 </aa> test4";

现在我们可以引爆它了:

$e = explode(' ', $string);

我们有一个数组$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>";

输出为:

<aa> test1 </aa>;
test2;
<aa> test3 </aa>;
test4;

但这是相当混乱的,可以理解。但是,可以遍历数组并按照您的需要构造单个数组:

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

输出结果相同。