powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Одна строковая функция
11 сообщений из 11, страница 1 из 1
Одна строковая функция
    #37979217
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Есть задача: нужно в заданной строке все идущие подряд одинаковые символы (пусть, например, символы девиса) заменить на одиночные.
Т.е.:

"as--df" => "as-df"
"as---" => "as-df"
...
"as---------------" => "as-df"

Скажите, есть ли в стандарте пхп функция, которая решит подобную задачу? str_replace и strtr не помогают, а мне, помнится, что я читал про подобного рада функцию.

Заранее спасибо!
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979227
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите, очипятка.

"as--df" => "as-df"
"as---df" => "as-df"
...
"as---------------df" => "as-df"

Вот теперь правильно
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979241
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
urukhay,

тынц ?!
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979251
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
А без использования регулярки никак решить нельзя?
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979279
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhayА без использования регулярки никак решить нельзя?Через str_replace прогнать несколько раз, пока двойных символов не останется?
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979292
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну можно конечно, только неизвестно, сколько раз прогонять, т.к. число повторений может быть бесконечным!
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979294
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhayнеизвестно, сколько раз прогонять
vkleпока двойных символов не останется
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979491
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhay,

можно и в один проход, но не факт что это будет быстрее регулярки
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
function strip_repeat($str) {
    $prev=null;
    $out = '';
    for($i=0,$m=strlen($str); $i<$m; ++$i) {
        if ($prev!=$str{$i})
            $out .= $str{$i};
        $prev = $str{$i};
    }
}
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979658
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhay,

Код: php
1.
2.
3.
4.
5.
6.
$in = array("as--df", "as---df---eg", "as---------------df");

foreach ($in as $v) {
	print_r(preg_split('/[-]+/', $v));
	echo PHP_EOL;
}


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Array
(
    [0] => as
    [1] => df
)

Array
(
    [0] => as
    [1] => df
    [2] => eg
)

Array
(
    [0] => as
    [1] => df
)
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979740
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, и конечно же собрать фрагменты вместе:
Код: php
1.
2.
3.
4.
$in = array("as--df", "as---df---eg", "as---------------df");

foreach ($in as $v)
	echo implode("-", preg_split('/[-]+/', $v)) . PHP_EOL;
...
Рейтинг: 0 / 0
Одна строковая функция
    #37979756
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
echo preg_replace('/[-]+/', '-', $v), PHP_EOL; // тот же паттерн - этот вариант предпочтительнее (от phpz)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Одна строковая функция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]