Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Функция сравнения строк не зависимая от локали
Форумы портала PHP.SU » PHP » Пользовательские функции » Функция сравнения строк не зависимая от локали

Страниц (1): [1]
 

1. vitaliy_mad - 03 Февраля, 2009 - 19:25:05 - перейти к сообщению
Возвращает значения аналогично strcmp
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function cmp($a,$b)
  3. {
  4.     $simb="()_0123456789";
  5.     $simb.="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  6.     $simb.="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
  7.     if ((strcmp($a,"")==0)and(strcmp($b,"")==0))
  8.     {
  9.         return 0;
  10.     }
  11.     if ((strcmp($a,"")==0))
  12.     {
  13.         return 1;
  14.     }
  15.     if ((strcmp($b,"")==0))
  16.     {
  17.         return -1;
  18.     }
  19.     if (strpos($simb,$a[0])<strpos($simb,$b[0]))
  20.     {
  21.         return -1;
  22.     }
  23.     if (strpos($simb,$a[0])>strpos($simb,$b[0]))
  24.     {
  25.         return 1;
  26.     }
  27.     if (strpos($simb,$a[0])==strpos($simb,$b[0]))
  28.     {
  29.         $c=substr($a,1);
  30.         $d=substr($b,1);
  31.         $r=cmp($c,$d);
  32.         return $r;
  33.     }
  34.  
  35. }
  36. ?>

(Добавление)
Колга под линуксом понадобилось отсортировать строковый массив, появилась неточность в сортировке с кириллицей... алфавит несколько раз повторялся... напсиал функцию и проблема решилась...

 

Powered by ExBB FM 1.0 RC1