清理文本字符串中字母之间的空格/三重空格


Clean up spaces between letters / triple spaces in text string

我需要清理文本字符串,每个字母之间有一个空格,每个空格由3个空格组成,例如:

E X C E P T I O N A L   C R E A T I V I T Y   A N D   A  
T A I L O R E D   D E S I G N   E D G E

我该如何清理文本,即将每三个空格转换为一个空格,并删除每个字母之间的空格?

欢迎客户端/服务器端解决方案

preg_replace('/(.) /', '''1', $string);

regex引擎不匹配作为替换结果的子字符串,因此它将正确处理三重空格,而不需要对它们进行特殊处理。

str_replace(array('   ', ' ', '%'), array('%', '', ' '), $text);

将%替换为文本中没有出现的字符或字符串

$input = <<<_EOI_
E X C E P T I O N A L   C R E A T I V I T Y   A N D   A  
T A I L O R E D   D E S I G N   E D G E
_EOI_;
$patterns = array('/('w) /', '/ {2,}/');
$replaces = array('$1', ' ');
preg_replace($patterns, $replaces, $input);
// output: 
// EXCEPTIONAL CREATIVITY AND A
// TAILORED DESIGN EDGE