2010-07-09 5 views
9

사람들이 iPhone 앱에 대한 사이트 링크를 제출할 수있는 사이트가 있습니다. 그 사람은 응용 프로그램 이름, 설명, 범주 및 URL을 제출합니다. 이 사이트는 수년이 걸려 러시아 개발자로부터 어떠한 건설적인 제출도받은 적이 없지만, 불행히도 러시아 스패머가 나에게서 지옥을 괴롭 히는 것을 발견했습니다. 스팸에 대한 모든 조치, 캡션 박스 등으로도 일부 사람들은 아이폰과 관련이없는 포르노 러시아 제품을 보내야한다고 주장합니다.PHP에서 양식의 러시아 문자 감지

나는 완전히 러시아어 문자를 사용하여 완료된 URL이나 게시물을 금지하고 싶습니다. URL의 경우 URL에 ".ru"가 포함되어 있는지 확인하는 것 외에는별로 할 일이 없습니다. 그러나 설명을 위해 러시아 문자를 감지하고 싶습니다. PHP로 어떻게 할 수 있습니까?

감사합니다.

+0

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

답변

38

Да очень просто 그것은 (당신의 위치를 ​​가정하는 것은 UTF-8 인코딩을 사용) UTF-8 정규 표현식 할 쉽게 :

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

3 가지 방법. 네가 내 경우에 효과가있다. 그리고 나는 네 이름으로, 네가 아마 거기에서 왔음을 알았다. :-) 감사. – SpaceDog

+2

@Mike, 거의, 나는 러시아 말고 러시아 출신이 아니다. :) –

+0

쿨 ... 나는 그 러시아어를 좋아한다. 그것은 거울에 쓰여진듯한 언어 다. :-) – SpaceDog

2

러시아어 알파벳을 다운로드 한 다음 입력 문자열을 strstr()으로 확인합니다. 예를 들어 :

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

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

아마 러시아어 문자가 다른 언어로 표시 할 수 있기 때문에 (언어가 실제로 러시아어 할 수 있는지 3 개 러시아어 문자 정도를 찾은 후 일을 할 것입니다 좋은 알고리즘, 나는 몇 가지 연구를하고 제안 그 경우).

0

지금 ..이 코드는 약 5 세이며,

하지만 (기본적으로는 일반 키릴 문자에 대한 다음 검사를 모든 외국 기관을 인코딩) 당신을 도울 수 있습니다 - 나는 어떠한 보증, 종류 중 하나를 따라서 비슷한 문제

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

없었다 때 다시 '나를 위해 일한'

최고!

+0

thanksssssssssssssssss! – SpaceDog

3

PHP documentation에 따르면 버전 5.1.0부터는 \ p {언어 코드}를 사용하여 utf-8 PCRE 정규 표현식에서 특정 (쓰기) 스크립트를 찾을 수있었습니다. PCRE는 천 십오에 대한 데이터를 포함하는 구조를 검색 할 수 을 가지고 있기 때문에, 유니 코드 속성으로 문자를 매치

빨리되지 않습니다 : Rusian를 들어

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

페이지에 경고가입니다 문자.

0

SOURCE : 나는 모든 테스트 후 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" 
관련 문제