2011-12-18 3 views
5

Попытка выяснить, как определить, содержит ли строка любые символов на иврите без везения.Как определить, содержит ли строка символы на иврите, используя PHP?

Как это можно сделать?

+2

Я считает эту ссылку поможет вам http://stackoverflow.com/questions/1694350/how-can-i -detect-hebrew-characters-both-iso8859-8-and-utf8-in-a-string-using-php –

ответ

7

Если исходная строка кодируется в кодировке UTF-8, тогда более простой подход будет использовать \p{Hebrew} в регулярном выражении.

Вызов также должен иметь модификатор /u.

= preg_match("/\p{Hebrew}/u", $string) 
+0

Не пропустили ли '' '' '\\ p'? – fge

+0

@fge: Если вы хотите быть супер правильным :) Но '' \ p "' не является escape-кодом C, поэтому он правильно дойдет до библиотеки PCRE как '\ p' – mario

+0

Хм, так что вам не нужно бежать обратная косая черта в строковых литералах PHP? Я этого не знал. – fge

2

map of the iso8859-8 character set. Диапазон E0 - FA, по-видимому, зарезервирован для иврита.

[\xE0-\xFA] 

Для UTF-8, range reserved for Hebrew, как представляется, 0590 до 05FF.

[\u0590-\u05FF] 

Вот пример матча регулярного выражения в PHP:

echo preg_match("/[\u0590-\u05FF]/", $string); 
1

Самый простой подход был бы:

preg_match('/[א-ת]/',$string) 

Например,

$strings = array("abbb","1234","aabbאאבב","אבבבב"); 

foreach($strings as $string) 
{ 
    echo "'$string' "; 

    echo (preg_match('/[א-ת]/',$string))? "has Hebrew characters in it." : "is not Hebrew"; 

    echo "<br />"; 
}