Tek bir harf için çift / daha harfleri yerine nasıl?

2 Cevap php

Ben kendisi tek bir harf ile bir kelime içinde iki ya da daha fazla ortaya herhangi bir harf dönüştürmek gerekir.

Örneğin:

School -> Schol
Google -> Gogle
Gooooogle -> Gogle
VooDoo -> Vodo

Ben aşağıdakileri denedim, ama eregi_replace yılında ikinci parametre sıkışmış.

$word = 'Goooogle';
$word2 = eregi_replace("([a-z]{2,})", "?", $word);

If I use \\1 to replace ?, it would display the exact match. How do I make it single letter?

Herkes yardımcı olabilir? Teşekkürler

2 Cevap

Bkz http://stackoverflow.com/questions/106067/regular-expression-to-replace-two-or-more-consecutive-characters-by-only-one

Arada: preg_* (PCRE) işlevlerini yerine önerilmemektedir ereg_* işlevleri (POSIX) kullanmalısınız.

Richard Szalay 'cevabı doğru yolu açar:

$word = 'Goooogle';
$word2 = preg_replace('/(\w)\1+/', '$1', $word);

Sadece siz değil (yerine sadece ilk karakter) tüm şey yakalarken, ancak {2,} [az] (değil orijinal maç) rematching. Eğer kullanırsanız bu çalışması gerekir:

$word2 = eregi_replace("(\w)\1+", "\\1", $word);

Hangi orijinal maç Geribaşvurularda. İsterseniz [a-z] ile w \ değiştirebilirsiniz.

+ (JS regex motoru için, zaten) sizin Goooogle örnek için gerekli, ama ben emin değilim neden olduğunu.

Eğer "küresel" bayrağını ("g") kullanmanız gerektiğini unutmayın.