2011-01-07 24 views
10

Tôi đang cố gắng xác thực dữ liệu biểu mẫu từ phía máy chủ. sở thích của tôi là người dùng chỉ cần điền vào biểu mẫu bằng các ký tự Ba Tư.sử dụng preg_match để phát hiện các ký tự persian (farsi) trong chuỗi

Tôi đang sử dụng mã này:

$name=trim($_POST['name']); 
$name= mysql_real_escape_string($name); 
if (preg_match('/^[\u0600-\u06FF]+$/',str_replace("\\\\","",$name))){$err.= "Please use Persian characters!";} 

nhưng nó không làm việc!

đây là một cảnh báo:

Warning: preg_match() [function.preg-match]: Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 3 in C:\xampp\htdocs\site\form.php on line 38 

tôi có thể làm gì?

Trả lời

9

'nên' Công việc này ...

** thêm a^sau khi mở [để loại trừ arabic/nhân vật Farsi từ trận đấu ...

if (preg_match('/^[^\x{600}-\x{6FF}]+$/u', str_replace("\\\\","",$name))) 
3

Bạn nên sử dụng này:

if(preg_match("/^[آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی]/", $_POST['name'])) 
2

regex này:

if(preg_match("/^[آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی]/", $_POST['name'])) 

bao gồm số và không gian?

4

http://utf8-chartable.de/unicode-utf8-table.pl?start=1536&number=1024&utf8=0x&addlinks=1&htmlent=1

پژگچ tại 600 - phạm vi 6 ff

fa chỉ:

preg_match('/^[پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ\s]+$/u', $input); 

en, en-num và nhân vật fa:

preg_match('/^([a-zA-Z0-9 پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])+$/u', $input); 

bạn có thể đặt fa- số hoặc arabic ي ك

Các vấn đề liên quan