配列の例のエントリ:
test : title=Diet Coke
なる
test:title=Diet Coke
正規表現を使用するこのアプローチでは、1つの文字列のみを処理しますが、配列を実行する場合は、配列を反復処理して、これを各文字列に適用します。
$target="test : title=Diet Coke";
print_r(preg_replace('/\s*([\s:])\s*/','\1',$target));
出力:
test:title=Diet Coke
私は正規表現の第一人者ではありませんが、これが一般的な考え方です。
$my_array = array('test : title=Diet Coke');
function do_crazy_thing($string){
$string = preg_replace('/ +/', ' ', $string);
$string = preg_replace('/ : /', ':', $string);
return $string;
}
$my_array = array_map('do_crazy_thing', $my_array);
編集:これをテストしたばかりで、正常に動作しているようです。
foreach ( $a as $k=>$v ) {
$v = preg_replace("`\s*:\s*`", ":", $v);
$a[$k] = preg_replace("`\s*`", " ", $v);
}
非正規表現の方法、
$string= "test : title=Diet Coke";
$s = explode(":",$string);
$s[0]=trim($s[0]);
$s[1]=trim($s[1]);
print implode(":",$s);