Вот реализация mootools 1.2 из кода, предоставленного XMLilley ...
Number.implement('format', function(decPlaces, thouSeparator, decSeparator){
decPlaces = isNaN(decPlaces = Math.abs(decPlaces)) ? 2 : decPlaces;
decSeparator = decSeparator === undefined ? '.' : decSeparator;
thouSeparator = thouSeparator === undefined ? ',' : thouSeparator;
var num = this,
sign = num < 0 ? '-' : '',
i = parseInt(num = Math.abs(+num || 0).toFixed(decPlaces)) + '',
j = (j = i.length) > 3 ? j % 3 : 0;
return sign + (j ? i.substr(0, j) + thouSeparator : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thouSeparator) + (decPlaces ? decSeparator + Math.abs(num - i).toFixed(decPlaces).slice(2) : '');
});
Обрезать, заменить табуляции и лишние пробелы одиночными пробелами:
$data = preg_replace('/[ ]{2,}|[\t]/', ' ', trim($data));
Предполагая, что квадратные скобки не являются частью строки и вы используете их только в иллюстративных целях, тогда:
$new_string = trim(preg_replace('!\s+!', ' ', $old_string));
Вы могли бы сделать это с помощью одного регулярного выражения, но оно будет довольно сложным регулярным выражением. Вышесказанное намного проще.
Примечание: Я также предполагаю, что вы не хотите заменять «AB \ t \ tCD» (\ t - вкладка) на «AB CD».
$data = trim($data);
Это избавляет от ваших начальных (и конечных) пробелов.
$pattern = '/\s+/';
$data = preg_replace($pattern, ' ', $data);
Это превращает любую коллекцию из одного или нескольких пробелов в одно пространство.
$data = str_replace("\t", " ", $data);
Это избавляет от ваших табуляций.
$new_data = preg_replace("/[\t\s]+/", " ", trim($data));