Почему не работает strtolower()?

vamfirius

Новичок
Почему не работает strtolower()?

Написал поисковик, всё работает нормально за исключением того, что ищет не по всем запросам. Не находит если вводишь в нижнем регистре, а на странице слово в верхнем.
За это у меня отвечает strtolower. Логично предположить что дело в ней. В мануале написано, что такое может быть из-за локали. Если это так то объясните пожалуйста как она устанавливается. Пробовал setlocale(LC_CTYPE,""); - не работает. Ошибок не выдаёт никаких - ini_set('display_errors',1);
error_reporting(E_ALL);
 

vamfirius

Новичок
В файлах - мой первый поисковик. Не использует индексацию.(
 

dimagolov

Новичок
опуская момент что такой поиск это сильно неэффективно...

в какой кодировке у тебя скрипты и данные?
 

vamfirius

Новичок
Скрипт в ANSI а данные я полагаю в той которая присутствует на серваке. Млин не могу найти где там её посмотреть, а чё если они разные функция не распознает и не заменит буквы?
 

FRIE

Новичок
делай всё в utf-8 и забудешь про траблы с кодировками
 

vamfirius

Новичок
Не знаю блин что там с этими кодировками у меня на серваке. Через phpinfo() посмотрел какие поддерживает. Пробовал заливать в о всех трёх - не работает. Написал свою функцию которая переделывает все буквы в нижний регистр, и к тому же не пропускает ничего кроме текста и цифр - в моём случае, это даже лучше чем strtolower(). Есть правда в ней один косяк - ставит слишком много нулей которые приходится дополнительно удалять при помощи str_replase, а потом при помощи её же некоторые приходится возвращать на место. Как с этим справится подскажите плиз.

function slo($ptext){
$ptext;
$phrase=split(" ",$ptext);
$alf=array(
"1"=>"1",
"2"=>"2",
"3"=>"3",
"4"=>"4",
"5"=>"5",
"6"=>"6",
"7"=>"7",
"8"=>"8",
"9"=>"9",
"0"=>"0",
"."=>".",
","=>",",



"a"=>"a",
"b"=>"b",
"c"=>"c",
"d"=>"d",
"e"=>"e",
"f"=>"f",
"g"=>"g",
"h"=>"h",
"i"=>"i",
"j"=>"j",
"k"=>"k",
"l"=>"l",
"m"=>"m",
"n"=>"n",
"o"=>"o",
"p"=>"p",
"q"=>"q",
"r"=>"r",
"s"=>"s",
"t"=>"t",
"u"=>"u",
"v"=>"v",
"w"=>"w",
"x"=>"x",
"y"=>"y",
"z"=>"z",

"а"=>"а",
"б"=>"б",
"в"=>"в",
"г"=>"г",
"д"=>"д",
"е"=>"е",
"ё"=>"ё",
"ж"=>"ж",
"з"=>"з",
"и"=>"и",
"й"=>"й",
"к"=>"к",
"л"=>"л",
"м"=>"м",
"н"=>"н",
"о"=>"о",
"п"=>"п",
"р"=>"р",
"с"=>"с",
"т"=>"т",
"у"=>"у",
"ф"=>"ф",
"х"=>"х",
"ц"=>"ц",
"ч"=>"ч",
"ш"=>"ш",
"щ"=>"щ",
"ь"=>"ь",
"ы"=>"ы",
"ъ"=>"ъ",
"э"=>"э",
"ю"=>"ю",
"я"=>"я",

"A"=>"a",
"B"=>"b",
"C"=>"c",
"D"=>"d",
"E"=>"e",
"F"=>"f",
"G"=>"g",
"H"=>"h",
"I"=>"i",
"J"=>"j",
"K"=>"k",
"L"=>"l",
"M"=>"m",
"N"=>"n",
"O"=>"o",
"P"=>"p",
"Q"=>"q",
"R"=>"r",
"S"=>"s",
"T"=>"t",
"U"=>"u",
"V"=>"v",
"W"=>"w",
"X"=>"x",
"Y"=>"y",
"Z"=>"z",

"А"=>"а",
"Б"=>"б",
"В"=>"в",
"Г"=>"г",
"Д"=>"д",
"Е"=>"е",
"Ё"=>"ё",
"Ж"=>"ж",
"З"=>"з",
"И"=>"и",
"Й"=>"й",
"К"=>"к",
"Л"=>"л",
"М"=>"м",
"Н"=>"н",
"О"=>"о",
"П"=>"п",
"Р"=>"р",
"С"=>"с",
"Т"=>"т",
"У"=>"у",
"Ф"=>"ф",
"Х"=>"х",
"Ц"=>"ц",
"Ч"=>"ч",
"Ш"=>"ш",
"Щ"=>"щ",
"Ь"=>"ь",
"Ы"=>"ы",
"Ъ"=>"ъ",
"Э"=>"э",
"Ю"=>"ю",
"Я"=>"я",
);
foreach($phrase as $w)
{
$hr="";
for($i=0;$i<=strlen($w);$i++)
{
$z=substr($w, $i ,strlen($w)-(strlen($w)-1));
$le=$alf[$z];
if(empty($hr))
{
$wo[]= " ";
}
$hr="1";
$wo[]=$le;
}
}
$wo=implode($wo,"");
return "$wo";
}
 
Сверху