preg_match и кирилицата ...

bgsalsa

Registered
Здравейте, имам база с поле VARCHAR и ТЕКСТ ... при кода:
Код:
if (isset($_GET['id'])) { $product = stripinput($_GET['id']); }
if (isset($_GET['qty'])) { $qty = stripinput($_GET['qty']); }
if (isset($_GET['color'])) { $color = stripinput($_GET['color']); }
if (isset($_GET['dync'])) { if (!preg_match('/[^a-zA-Z\p{Cyrillic}0-9:\'\s\-]/u',  $_GET['dync'])) { die('Denied dynamic'); exit; } $dync = stripinput($_GET['dync']); }
if (isset($_GET['prod'])) { if (!preg_match("/[^a-zA-Zа-Ая-ЯСсТтУуФфХхЦцЧчШшЩщЪъЮюРр ]/", $_GET['prod'])) { die("Denied product"); exit; } $citem = stripinput($_GET['prod']); }
if (isset($_GET['image'])) { if (!preg_match("/^[\w-0-9A-Z\xe6\xc6\xf8\xd8\xe5\xc5\xf6\xd6\xe4\xc4\/._@\s]+$/i", $_GET['image'])) { die("Denied image"); exit; } $cimage = stripinput($_GET['image']); }
if (isset($_GET['dynct'])) { if (!preg_match("/[^a-zA-Zа-Ая-ЯСсТтУуФфХхЦцЧчШшЩщЪъЮюРр ]/",  $_GET['dynct'])) { die("Denied dynamic"); exit; } $cdynct = stripinput($_GET['dynct']); }
if (isset($_GET['cprice'])) { if (!preg_match("/^[0-9.,@\s]+$/i", $_GET['cprice'])) { die("Denied price"); exit; } $cprice = stripinput($_GET['cprice']); }
if (isset($_GET['weight'])) { if (!preg_match("/^[0-9.,@\s]+$/i", $_GET['weight'])) { die("Denied weight"); exit; } $weight = stripinput($_GET['weight']); }
if (isset($_GET['artno'])) { if (!preg_match("/[^a-zA-Zа-Ая-ЯСсТтУуФфХхЦцЧчШшЩщЪъЮюРр ]/", $_GET['artno'])) { die("Denied Artno"); exit; } $artno = stripinput($_GET['artno']); }
if (isset($_GET['cupon'])) { $cupon = stripinput($_GET['cupon']); }

И файл в ANSI ... ми дава Denied dynamic. При запис на кирилица. Пробвах различни варианти. Ако файла е UTF8, работи, но не записва кирилица а шльокавица :) Къде бъркам?

При файл ... UTF8
Код:
Заздравител Р·Р° нокти NAIL REPAIR ГЛАНЦ, 12 РјР». е добавен към
 
Предполагам прехвърляш информацията с ajax, защото там стават такива бъгни.

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

PHP:
preg_match("/[^a-zа-я]/iu", $_GET['prod'])

За файла от който праща информацията, може да погледнеш iconv, лесно се работи с тази функция, и разбира се да не забравиш да сейфаш файловете с UTF8 кодировка и БД да ти е с utf8_general_ci, както и таблиците и ПОЛЕТАТА .

Iconv: http://php.net/manual/en/function.iconv.php

Тъй като не си дал много информация а само някакъв що-годе минимизиран код(сбит), не очаквай кой зна е колко релативна информация :D :?: :idea:
 
joTunkiq каза:
Предполагам прехвърляш информацията с ajax, защото там стават такива бъгни.

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

PHP:
preg_match("/[^a-zа-я]/iu", $_GET['prod'])

За файла от който праща информацията, може да погледнеш iconv, лесно се работи с тази функция, и разбира се да не забравиш да сейфаш файловете с UTF8 кодировка и БД да ти е с utf8_general_ci, както и таблиците и ПОЛЕТАТА .

Iconv: http://php.net/manual/en/function.iconv.php

Тъй като не си дал много информация а само някакъв що-годе минимизиран код(сбит), не очаквай кой зна е колко релативна информация :D :?: :idea:

БЛАГОДАРЯ за отговора .... да и аз мисля , че проблема е от ajax ... но и честно казано, търся бърз и лесен вариант. Кажи какво друго да ти кача от кода, защото продължава да си играем с шльокавицата :)
 

Back
Горе