лишить пробел между словами одной буквы - PullRequest
2 голосов
/ 09 мая 2011

Как бы вы разделили пробелы между словами одной буквы.Пример:

  • string: "TIGRUS FOO и Drezga d. O. New York"
  • мы хотим: "TIGRUS FOO и Drezgadoo New York "

Если возможно решение preg_replace, извините, что не сказал раньше.

Ответы [ 3 ]

3 голосов
/ 09 мая 2011

Следующие работы.

$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"

2 голосов
/ 09 мая 2011

Попробуйте этот 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"

?>

0 голосов
/ 09 мая 2011

К сожалению, это невозможно.Не существует простого способа отличить границы слова из одного пробела от лишних пробелов между символами слова.

РЕДАКТИРОВАТЬ: Отозвано - я сделал предположение, что замена должна быть обработана должным образом (т.е.разделить) слова, которые на самом деле одного символа.

...