Изкарване на кирилски букви

bgkulinar

Меринджей
Съжалявам, но не знаех как точно да форумулирам темата.

Ето какво прави скрипта - дърпа първите букви от едно поле на таблица и извежда азбуката и като като кликнеш на дадена буква, вади резултати започващи само с избраната буква. Понеже не обясних много добре, ето пример точно под хедъра:
Код:
http://rezepte.bgkulinar.net/
Ето и самият код:
Код:
http://pastebin.com/9j7bbEqM
Кодът работи ОК с букви на латиница, но с кирилица не ще. Бих човъркал, но не мога да разбера смисъла на кода. Ще се радвам на всякави предложения.
 
Re: Изкарване на кирилски букви

Забелязах че се ползва SUBSTRING функция, а от опит знам че тя не работи правилно на кирилица. Трябва да се замести с mb_substring функция. Но като гледам тази функция не е от PHP-то защото там тя е substr, а е от MYSQL-а (може и тотално да греша, не съм запознат с функциите на mysql-а ако има такива). Има ли mb версия както в php?
Edit: Може би и strpos да се замести с mb_strpos.
 
Re: Изкарване на кирилски букви

Скуби, да SUBSTRING си е MySQL функция и си работи перфектно. Поне в phpmyadmin си вади всички начални кирилски букви.
 
Re: Изкарване на кирилски букви

Проблемът е в това, че скриптът разпознава знаците по ординарните им стойности. Диапазоните 192-222 и вторият с +32 в случая са за латинската азбука. Трябва да се заменят с еквивалента им на кирилица. Но честно казано не знам точно тук защо са такива и как ги смятат. Принципно главните латински букви са в интервала 65-90, малките с 32 позиции нагоре, съответно 97-122.
 
Re: Изкарване на кирилски букви

Предполагам, че аски-кодовете трябва да се оправят да обхващат кирилските букви... Там, дето е >192 и <222 (пардон, ако е оправено, не помня кодовете...)

В крайна сметка, какво връща скрипта?
 
Re: Изкарване на кирилски букви

Опа, Клокси ме е изпреварил....

Тука е направено малко сложничко... Според мен цялото това филтриране дали е от тази до тази буква и дали е малка или голяма, може да се изпусне...

Слагаш буквите, които те интересуват, в един масив. С 1 заявка проверяваш с какви начални букви има рецепти. После пишеш азбуката (буквите от масива) съответно с линк или без линк. И накрая проверяваш дали имаш подаден параметър буква, за да визуализираш съответните рецепти...
 
Re: Изкарване на кирилски букви

А locale-а на сървъра, където е въпросната база какъв е? Да не би заради него да не вади правилните символи, въпреки че ascii кодовете са правилно зададени?
 

Back
Горе