剥离一个字母单词之间的空格

时间:2011-05-08 20:58:29

标签: php preg-replace strip

如何在一个字母单词之间删除空格。例如:

  • string:“T I G R U F FOO和Drezga d.o.o.New York”
  • 我们想要:“TIGRUS FOO和Drezga d.o.o.纽约”

如果可能的话,preg_replace解决方案,抱歉以前没有告诉过。

3 个答案:

答案 0 :(得分:3)

以下作品。

$string = "T I G R U S FOO and Drezga d . o . o . New York";

$words = explode(" ", $string);

$output = array();
$temp_word = "";
foreach($words as $word)
{
    if (strlen($word) == 1)
    {
        $temp_word .= $word;
    }
    else
    {
        if ($temp_word != "")
        {
            $output[] = $temp_word;
            $temp_word = "";
        }
        $output[] = $word;
    }
}

$output = implode(" ", $output);
echo $output;

输出:“TIGRUS FOO和Drezga d.o.o. New York”

答案 1 :(得分:2)

试试这个PHP代码:

<?php
   $str = "T I G R U S FOO and Drezga d . o . o . New York";
   $out = preg_replace('~(\b.)\s~', "\\1", $str);
   var_dump($out);
?>

<强>输出

string(38) "TIGRUSFOO and Drezga d. o. o. New York

更新

<?php
   $str = "T I G R U S FOO and Drezga d . o . o . New York N Y";
   $s = preg_replace('~((?<=^[^\s])|(?<=\s[^\s]))\s(?=[^\s](\s|$))~', "", $str);
   var_dump($s);
?>

<强>输出

string(40) "TIGRUS FOO and Drezga d.o.o. New York NY"

&GT;

答案 2 :(得分:0)

不幸的是,这是不可能的。没有简单的方法可以区分单个空格的单词边界与单词的字符之间的无关单个空格。

编辑:撤回 - 我假设替换需要正确处理(即保持单独)实际上是一个字符长的单词。