Autor Zpráva
slon_cz
Profil
Ahoj, potřeboval bych nějakým způsobem udělat regex, který by ze stringu


"ahooooj" udělal "ahoj", ale třeba z "dneska to stojí 300kč" to nezmění nic, respektive že to neodstraní dvě ty nuly. Napadá někoho, jak by šlo toto udělat? Děkuji
Keeehi
Profil
slon_cz:
Rozlišit písmena od čísel není problém. Problém je ale jen se samotnými písmeny. Jde o to, že existují slova, která v sobě mají zdvojené hlásky. Takže bohužel aahhoojj nebo ahooj nejde rozeznat od třeba půllitr nebo dvojjazyčný. Skupiny tří a více stejných po sobě jdoucích písmen se v češtině nevyskytují, takže ty by odstranit šly. Ale se dvěma je problém.
// nahradí tři a více
$output = preg_replace('~([[:alpha:]])\1{2,}~', '\1', $input);

// nahradí dva a více => vytváří gramatické chyby
$output = preg_replace('~([[:alpha:]])\1+~', '\1', $input);
juriad
Profil
Hunspell zná 57686 českých slov, která obsahují dvě stejná písmena za sebou; malý vzorek:
nejneoddestilovanějšími
dvousměnnostmi
Apollónech
neeliminačníma
neexogenníma
surrealistčiny
dvaapůltýdennímu
nepootevřeným
poopravenost
kuchtiččinou

K těm trojitým opakováním; občas můžeš narazit (hunspell):
brrr
crrrrr
fff
grrrr
hmmm
hmmmm
chrrr
III
KSSS
mmmm
mmmmm
ppp
pšššt
SSSR
škvrrrk
VIII
vrrr
WWW
www
XIII
XVIII

Moderátor Kajman: Vkládej prosím kódy mezi značky [pre] a [/pre]

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: