需要帮助。如何使用标签分割字符串到数组?
输入:<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);
}
输出结果相同。