main.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
 * удаляет идущие подряд (через один или несколько пробелов) два и более одинаковых слов
 * */

function escapeDuplicateWords($text)
{
    $pattern = '/(\b\w+\b\s)(?=.*?\1)/si';
    
    // удаляем пробелы до/после строки
    $text = trim($text);
    
    // удаляем лишние пробелы внутри строки
    $text = preg_replace('/\s\s+/', ' ', $text);
    
    // добавляем пробел вконце строки
    $text = preg_replace('/(.+)/', '$1 ', $text);
    
    //применяем основной шаблон
    return preg_replace($pattern, '', $text);
}

$text = "Welcome to RegExr v2.1 by gskinner.com, proudly hosted by by Media Temple!

Edit the the the the Expression & Text to see matches. Roll over matches or the expression for details. Undo mistakes with ctrl-z. Save Favorites & Share expressions with friends or the Community. Explore your results with Tools. A full Reference & Help is available in the Library, or watch the video Tutorial.";

echo escapeDuplicateWords($text);
PHP 7.0.8 (cli) (built: Jun 23 2016 23:39:14) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies