Ibr*_*mar 3 php arrays split duplicates
考虑我有这个字符串'aaaabbbaaaaaabbbb'我想将其转换为数组,以便我得到以下结果
$array = [
'aaaa',
'bbb',
'aaaaaa',
'bbbb'
]
Run Code Online (Sandbox Code Playgroud)
如何在PHP中解决这个问题?
正则表达式: (.)\1{1,}
(.):匹配并捕获单个字符.
\1:这将包含第一场比赛
\1{1,}:使用匹配的字符一次或多次.
<?php
ini_set("display_errors", 1);
$string="aaaabbbaaaaaabbbb";
preg_match_all('/(.)\1{1,}/', $string,$matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)
输出:
Array
(
[0] => Array
(
[0] => aaaa
[1] => bbb
[2] => aaaaaa
[3] => bbbb
)
[1] => Array
(
[0] => a
[1] => b
[2] => a
[3] => b
)
)
Run Code Online (Sandbox Code Playgroud)
要么:
<?php
$string="aaaabbbaaaaaabbbb";
$array=str_split($string);
$start=0;
$end= strlen($string);
$indexValue=$array[0];
$result=array();
$resultantArray=array();
while($start!=$end)
{
if($indexValue==$array[$start])
{
$result[]=$array[$start];
}
else
{
$resultantArray[]=implode("", $result);
$result=array();
$result[]=$indexValue=$array[$start];
}
$start++;
}
$resultantArray[]=implode("", $result);
print_r($resultantArray);
Run Code Online (Sandbox Code Playgroud)
输出:
Array
(
[0] => aaaa
[1] => bbb
[2] => aaaaaa
[3] => bbbb
)
Run Code Online (Sandbox Code Playgroud)