2010-07-09 15 views
9

İnsanların iPhone uygulamaları hakkında sitelere bağlantılar gönderebileceği bir sitem var. Adam uygulama adını, açıklamasını, kategorisini ve URL'sini gönderir. Bu sitenin yıllara sahip olması ve hiçbir zaman bir Rus geliştiriciden herhangi bir yapıcı sunum almadığı, ancak maalesef Rus spamcıların benim dışımda rahatsız olduğunu keşfettiği tespit edildi. Altyazılara karşı tüm önlemlerle bile, resim kutuları vb. Gibi, bazı erkekler iPhone ile ilgisi olmayan porno rusça şeyler göndermede ısrar ederler.PHP'de bir formdaki Rusça karakterleri algılama

Rusça karakterler kullanılarak yapılan herhangi bir URL'yi veya postayı tamamen yasaklamak istiyorum. URL'ler için, URL’nin ".ru" içerip içermediğini kontrol etmekten başka yapmadığım çok şey yoktur. Fakat açıklamalarda, Rus karakterlerini tespit etmek istiyorum. Bunu PHP'de nasıl yaparım?

Teşekkürler.

+0

http://www.weberdev.com/Print-Code-Example.php?ExampleID=4650&mode=color – Sarfraz

cevap

38

Да очень просто O (sitenizi varsayarak UTF-8 kodlaması kullanır) UTF-8 düzenli ifadeler ile yapmak kolaydır:,

function isRussian($text) { 
    return preg_match('/[А-Яа-яЁё]/u', $text); 
} 
+0

3 yöntem Seninki benim durumumda çalışan kişi. Ve isminizle görüyorum, muhtemelen oradan geliyorsunuz! :-) Teşekkürler. – SpaceDog

+2

@Mike, neredeyse, Rusça konuşuyorum ama Rusya'dan değil :) –

+0

Cool ... Bu Rus karakterleri seviyorum ... bir aynada yazılmış gibi görünüyor bir dil ... :-) – SpaceDog

2

Rus alfabesini indirir ve daha sonra strstr() ile giriş dizesini kontrol ederim. Örneğin:

$russianChars = array('з', 'я'.. etc); 

foreach($russianChars as $char) { 
    if(strstr($input, $char)) { 
     // russian char found in input, do something 
    } 
} 

muhtemelen Rus karakter diğer dillerde görünebilir çünkü (dil aslında Rus olduğundan emin olmak için 3 Rus karakter ya da öylesine, bulduktan sonra bir şey yapacağını İyi algoritma Bazı araştırmalar yapıyordum öneririz Eğer durum buysa).

0

şimdi .. bu kod yaklaşık 5 yaşında ve

ama (temelde ortak alfabesi karakter için daha sonra çekleri tüm yabancı varlıkları kodlar) size yardımcı olabilir - Ben hiçbir garanti, türünün herhangi dolayısıyla benzer bir sorun

function detect_cyr_utf8($content) 
{ 
    return preg_match('/&#10[78]\d/', mb_encode_numericentity($content, array(0x0, 0x2FFFF, 0, 0xFFFF), 'UTF-8')); 
} 

vardı geri 'benim için çalıştı'

Best!

+0

thanksssssssssssssssssss! – SpaceDog

3

PHP documentation'a göre, 5.1.0 sürümünden bu yana, utf-8 PCRE düzenli ifadelerinde belirli (yazma) komut dosyalarını \ p {dil kodu} kullanarak aramak mümkün olmuştur. PCRE on beş binden fazla ilişkin verileri içeren bir yapı aramak için çünkü Unicode karakterlerle eşleşme

hızlı değildir: Rusian için

preg_match('/[\p{Cyrillic}]/u', $text); 

sayfada bir uyarı vardır olduğunu karakter.

0

KAYNAK: Bütün test sonra http://zurb.com/forrst/posts/Convert_cyrillic_to_latin_in_PHP-vWz

function ru2lat($str) { 
    $tr = array(
    "А"=>"a", "Б"=>"b", "В"=>"v", "Г"=>"g", "Д"=>"d", 
    "Е"=>"e", "Ё"=>"yo", "Ж"=>"zh", "З"=>"z", "И"=>"i", 
    "Й"=>"j", "К"=>"k", "Л"=>"l", "М"=>"m", "Н"=>"n", 
    "О"=>"o", "П"=>"p", "Р"=>"r", "С"=>"s", "Т"=>"t", 
    "У"=>"u", "Ф"=>"f", "Х"=>"kh", "Ц"=>"ts", "Ч"=>"ch", 
    "Ш"=>"sh", "Щ"=>"sch", "Ъ"=>"", "Ы"=>"y", "Ь"=>"", 
    "Э"=>"e", "Ю"=>"yu", "Я"=>"ya", "а"=>"a", "б"=>"b", 
    "в"=>"v", "г"=>"g", "д"=>"d", "е"=>"e", "ё"=>"yo", 
    "ж"=>"zh", "з"=>"z", "и"=>"i", "й"=>"j", "к"=>"k", 
    "л"=>"l", "м"=>"m", "н"=>"n", "о"=>"o", "п"=>"p", 
    "р"=>"r", "с"=>"s", "т"=>"t", "у"=>"u", "ф"=>"f", 
    "х"=>"kh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", "щ"=>"sch", 
    "ъ"=>"", "ы"=>"y", "ь"=>"", "э"=>"e", "ю"=>"yu", 
    "я"=>"ya", " "=>"-", "."=>"", ","=>"", "/"=>"-", 
    ":"=>"", ";"=>"","—"=>"", "–"=>"-" 
    ); 
    return strtr($str,$tr); 
} 

echo ru2lat("текст по-русски"); --------------> "tekst po-russki" 
İlgili konular