Заменить несколько экземпляров PHP - PullRequest
2 голосов
/ 18 апреля 2011

Мне просто интересно, как я могу заменить несколько экземпляров - одним из них, используя php,

, например, сказать, что у меня есть

test----test---3

, что я могу сделать, чтобы заменить несколькоэкземпляры - только с 1, так что это будет

test-test-3

спасибо:)

Ответы [ 3 ]

6 голосов
/ 18 апреля 2011

Удалить все повторяющиеся символы:

$string = 'test----test---3';
echo preg_replace('{(.)\1+}','$1',$string);

Удалить определенный повторяющийся символ:

$string = 'test----test---3';
echo eregi_replace("-{2,}", "-", $string);

Удалить определенный повторяющийся символ «безобразным» способом:

$string = 'test----test---3';
echo implode('-',array_filter(explode('-',$string)));

Результат для всех фрагментов:

test-test-3
2 голосов
/ 18 апреля 2011

Хм ...

function replaceDashes($str){
    while(strpos($str,'--')!==false)
        $str=str_replace('--','-',$str);
    return $str;
}

Вы можете сделать это "быстрее", заменив:

        $str=str_replace('--','-',$str);

на:

        $str=str_replace(array('----','---','--'),'-',$str);
0 голосов
/ 15 июля 2013

Поскольку eregi_replace и ereg_replace устарели в PHP5, вы также можете попробовать

preg_replace("/-{2,}/", "-", $string);

Так что, если вы запустите

preg_replace("/-{2,}/", "-", "--a--b---c----")

вернется

-a-b-c-

...