PHP. Кириллица в регулярных изражениях

Попаднах на проблем, а именно сайта не искаше да поддържа български пароли. При регистрация потребителят може да използва само цифри и латински букви като парола. Но за Runet поддръжката на пароли, използващи кирилица, също е от значение. Предимствата са, че такава парола е по-лесна за запомняне от потребителя, както и по-висока сигурност в случай, че се опита да я вземе. Например китайски хакери)).

Задачата беше да научи PHP да обработва български символи в регулярни изрази. Решението не беше намерено веднага, но се оказа доста просто.

Преди регулярния израз в скрипта трябва да посочите локала, това става чрез написване на следната команда (ако се използва UTF-8 кодиране, ако CP1251, тогава го записваме):

след това самия регулярен израз с клавиша \u, така че процесорът да знае, че в израза се използват национални знаци.

Така научихме регулярните изрази да бъдат приятели с кирилицата. Ако има допълнения пишете.

Подобни публикации

Не изрязва други символи по шаблона, като въпросителен знак и др. Ако премахнете клавиша \u, тогава той прекъсва, но не е приятелски настроен към кирилицата ...

Разбрах. Ключът е поставен на грешното място /[^a-zA-Z0-9a-zA-Z ]/u - правилно /[^a-zA-Z0-9a-zA-Z ]u/ - неправилно

Имаше подобна задача и с кирилицата, само че в дума без цифри се проверяват български знаци, тоест думата да се пише САМО с български букви. Писане чрез setlocale(LC_ALL, "ru_RU.UTF-8"); понякога не е опция - не всеки сървър работи с кирилица (както и в моя случай). Затова реших да го заобиколя по друг начин чрез 2 функции. Може би някой има нужда - ще се радвам

$arr = array("A" => "A", "B" => "B", "C" => "V", "D" => "G", "D" => "D", "E"=> “E”, “Ё” => “YO”, “Ж” => “ZH”, “З” => “Z”, “И” => “I”, “Й” => “J”, “К” => “К”, “Л” => “L”, “М” => “М”, “Н” => “N”, “О” => “О”, “П” => “P”, “R” => “R”, “С” => “S”, “Т” => “Т”, “У” => “U”, “Ф” => “F”, “Х” => “X”, “Ц” => “C”, “Ч” => “CH”, “Ш” => “SH”, “Щ” => “ЩХ”, “Ъ” => “‘”, “Ы” => “Y”, “Ь” => “”, “Е” => “E”, “Ю” => “YU”, “Я” => “YA”, “а” => “а”, “б” => “b”, “в” => “v”, “г” => “g”, “д” => “d”, “е” => “e”, “ё” => “йо”, “ж” => “zh”, “з” => “z”, “и” => “i”, “й” => “j”, “к” => “k”, “л” => “l”, “м” => “m”, “н” => “n”, “о” => “о”, “п” => “p”, “р” => “r”, “с” => “s”, “т” => “t”, “у” => “u”, “ф” => “f”, “х” => “x”, “ц” => “c”, “ч” => “ch”, “ш” => “sh”, “щ” => “шшш”, “ъ” => “”, “ы” => “y”, “ь” => “”, “е” => “e”, “ю” => “ю”, “я” => "у а",);

$tArr = array_keys(translitArray()); $town_name = str_replace(” “, “”, $town_name); $town_length = mb_strlen($town_name); str_replace($tArr, «», $town_name, $town_check_length); връща $town_check_length==$town_length; >

Сол в това, което кол-во замен трябва да равнява кол-во символи в словото