アーカイブする方法がわかりません(それが可能かどうかは疑問です)が、別の解決策は次のとおりです。
$str='A AtestA 4 testZ Z';
$arr=preg_split('#(test[a-zA-Z0-9\s]*test)#', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
var_dump($arr); //just to debug (compare)
var_dump(array_map(function($v){
if(preg_match('#test[a-zA-Z0-9\s]*test#',$v))
return str_replace(' ','',preg_replace('#(test[a-zA-Z0-9\s]*)test#','\1',$v));
else
return $v;
},$arr));
出力:
array(3) {
[0]=>
string(3) "A A"
[1]=>
string(12) "testA 4 test"
[2]=>
string(3) "Z Z"
}
array(3) {
[0]=>
string(3) "A A"
[1]=>
string(6) "testA4"
[2]=>
string(3) "Z Z"
}
preg_split
実際のコードでは、をに組み合わせることができますarray_map
。