Is there an efficient way to replace all duplicate non-alphanumeric characters with single characters?
This question forces one to be explicit about the punctuation characters:
PHP - Removing Duplicate Punctuation?
Like so:
$str = preg_replace('~[?!]{2,}~', '?', preg_replace('~([.,!?])(\\1+)~', '\\1', $str));
Is it possible to achieve the same result but for ALL non-alphanumeric characters without explicitly referencing them by name?
Here's a use case:
Hello... how are you!!?? I''m bored!!----!!!&&&&&^^^^%%%(()))((<<<<<
to
Hello. how are you!? I'm bored!-!&^%()(<
UPDATE
Unfortunately the above cuts too deep in one use case: http://
. How can one keep double /
for urls (or simply when they follow :
), but not allow regular repeat /
or even more than 2 /
after a :
. Here is a single use case:
My ////favorite//// site is http://///example.com!!!!!!!
becomes:
My /favorite/ site is http://example.com!