Има ли ефективен начин за замяна на всички дублирани небуквено-цифрови знаци с единични знаци?
Този въпрос принуждава човек да бъде ясен относно пунктуационните знаци:
PHP - Премахване на дублиращата се пунктуация?
Така:
$str = preg_replace('~[?!]{2,}~', '?', preg_replace('~([.,!?])(\\1+)~', '\\1', $str));
Възможно ли е да се постигне същия резултат, но за ВСИЧКИ знаци, които не са буквено-цифрови, без изрично да се споменават по име?
Ето един случай на употреба:
Hello... how are you!!?? I''m bored!!----!!!&&&&&^^^^%%%(()))((<<<<<
to
Hello. how are you!? I'm bored!-!&^%()(<
АКТУАЛИЗАЦИЯ
За съжаление горното навлиза твърде дълбоко в един случай на употреба: http://
. Как може да се запази двойно /
за URL адреси (или просто когато следват :
), но да не се позволява редовно повтаряне /
или дори повече от 2 /
след :
. Ето един случай на употреба:
My ////favorite//// site is http://///example.com!!!!!!!
става:
My /favorite/ site is http://example.com!