需要帮助。如何使用标签将字符串拆分为数组?
输入:
<aa> test1 </aa> test2 <aa> test3 </aa> test4 ....
输出:
arr[0] = <aa> test1 </aa>;
arr[1] = test2;
arr[2] = <aa> test3 </aa>;
arr[3] = test4;
提前致谢!
答案 0 :(得分:4)
使用半狡猾的正则表达式的超强力量!
$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);
答案 1 :(得分:0)
使用explode
可以实现我早些时候回答了这个问题,但是由于某些人认为不可能这样做,所以它得到了投票,这是可能的。你只需要构建自己的数组,但首先要做的事情。
首先,我们提到了你提到的这个字符串:
$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);
}
输出相同。
这可能不是最好的方法,但它有效。