2014-04-24 3 views
0

체코 (및 기타) 문자 정렬 정렬을하고 있습니다. 나는 비교 기능을 썼다 그러나 않는 strstr에 문제가 있습니다 :체코 문자 정렬 PHP - 비교 함수의 문제

Warning: strstr() [function.strstr]: needle is not a string or an integer in ... 

그리고 두 번째 문제는 제대로 비교하지 않는다는 것입니다. 나는 usort 매뉴얼과 몇 가지 예제를 점검하고 이것이 괜찮을 것이라고 생각하지만, 뭔가 잘못되었다. string에서도 $ a-> getJmenoSouboru()와 $ b-> getJmenoSouboru()를 확인합니다. 실제로 문자열입니다. 그래서 나는 그 경고에 대해 이해하지 못한다.

 class Soubor { 
      private $jmenoSouboru; 
      private $datumPosledniZmeny; 

      /** 
      * @param mixed $datumPosledniZmeny 
      */ 
      public function setDatumPosledniZmeny($datumPosledniZmeny) 
      { 
       $this->datumPosledniZmeny = $datumPosledniZmeny; 
      } 

      /** 
      * @return mixed 
      */ 
      public function getDatumPosledniZmeny() 
      { 
       return $this->datumPosledniZmeny; 
      } 

      /** 
      * @param mixed $jmenoSouboru 
      */ 
      public function setJmenoSouboru($jmenoSouboru) 
      { 
       $this->jmenoSouboru = $jmenoSouboru; 
      } 

      /** 
      * @return mixed 
      */ 
      public function getJmenoSouboru() 
      { 
       return $this->jmenoSouboru; 
      } 

      public function __construct() { 
       // allocate your stuff 
      } 

      public static function withParameters($jmeno, $datum) { 
       $instance = new self(); 
       $instance->jmenoSouboru = $jmeno; 
       $instance->datumPosledniZmeny = $datum; 
       return $instance; 
      } 

    } 

$pole = array(); 
$items = array('zmatek', 'řeřicha', 'rumcajz', 'ahojda', 'čeněk', 'ájina', 'žampion'); 

$i = 0; 
foreach ($items as $value) { 
    $i++; 
    $soubor = Soubor::withParameters($value, $i.".4.2014"); 
    $pole[] = $soubor; 
} 


    function sort_by_name_ascii($a, $b) { 
     static $translations; 
     //z důvodů úspory výkonu je pole $translations vytvářeno pouze při prvním volání 
     if(!$translations) { 
      if($bool = is_file('translations.txt')) { 
       echo("bool:".$bool); 
       $translations = parse_ini_file('translations.txt'); 

      } 
     } 
     echo(is_string($a->getJmenoSouboru()). " ".$b->getJmenoSouboru()."<br />"); 

     $A = strstr($a->getJmenoSouboru(), $translations); 
     $B = strstr($b->getJmenoSouboru(), $translations); 
     return strnatcasecmp($A, $B); 
    } 

    usort($pole, "sort_by_name_ascii"); 
    echo "<br /> Sorted array<br />"; 
foreach($pole as $k => $prvek) { 
    echo($prvek->getJmenoSouboru()); 
    echo(" ".$prvek->getDatumPosledniZmeny()); 
    echo("<br />"); 
} 

translations.txt은 다음과 같습니다

가 대신 않는 strstr의
; global transliteration 
[default] 
À = "A" 
Á = "A" 
 = "A" 
à = "A" 
Ä = "Ae" 
Å = "A" 
Æ = "A" 
Ā = "A" 
Ą = "A" 
Ă = "A" 
Ç = "C" 
Ć = "C" 
Č = "CZZ" 
Ĉ = "C" 
Ċ = "C" 
Ď = "DZZ" 
Đ = "D" 
È = "E" 
É = "E" 
Ê = "E" 
Ë = "E" 
Ē = "E" 
Ę = "E" 
Ě = "E" 
Ĕ = "E" 
Ė = "E" 
Ĝ = "G" 
Ğ = "G" 
Ġ = "G" 
Ģ = "G" 
Ĥ = "H" 
Ħ = "H" 
Ì = "I" 
Í = "I" 
Î = "I" 
Ï = "I" 
Ī = "I" 
Ĩ = "I" 
Ĭ = "I" 
Į = "I" 
İ = "I" 
IJ = "IJ" 
Ĵ = "J" 
Ķ = "K" 
Ľ = "K" 
Ĺ = "K" 
Ļ = "K" 
Ŀ = "K" 
Ł = "L" 
Ñ = "N" 
Ń = "N" 
Ň = "NZZ" 
Ņ = "N" 
Ŋ = "N" 
Ò = "O" 
Ó = "O" 
Ô = "O" 
Õ = "O" 
Ö = "Oe" 
Ø = "O" 
Ō = "O" 
Ő = "O" 
Ŏ = "O" 
Π= "OE" 
Ŕ = "R" 
Ř = "RZZ" 
Ŗ = "R" 
Ś = "S" 
Ş = "S" 
Ŝ = "S" 
Ș = "S" 
Š = "SZZ" 
Ť = "TZZ" 
Ţ = "T" 
Ŧ = "T" 
Ț = "T" 
Ù = "U" 
Ú = "U" 
Û = "U" 
Ü = "Ue" 
Ū = "U" 
Ů = "UZZ" 
Ű = "U" 
Ŭ = "U" 
Ũ = "U" 
Ų = "U" 
Ŵ = "W" 
Ŷ = "Y" 
Ÿ = "Y" 
Ý = "Y" 
Ź = "Z" 
Ż = "Z" 
Ž = "ZZZ" 
à = "a" 
á = "a" 
â = "a" 
ã = "a" 
ä = "ae" 
ā = "a" 
ą = "a" 
ă = "a" 
å = "a" 
æ = "ae" 
ç = "c" 
ć = "c" 
č = "czz" 
ĉ = "c" 
ċ = "c" 
ď = "dzz" 
đ = "d" 
è = "e" 
é = "e" 
ê = "e" 
ë = "e" 
ē = "e" 
ę = "e" 
ě = "e" 
ĕ = "e" 
ė = "e" 
ƒ = "f" 
ĝ = "g" 
ğ = "g" 
ġ = "g" 
ģ = "g" 
ĥ = "h" 
ħ = "h" 
ì = "i" 
í = "i" 
î = "i" 
ï = "i" 
ī = "i" 
ĩ = "i" 
ĭ = "i" 
į = "i" 
ı = "i" 
ij = "ij" 
ĵ = "j" 
ķ = "k" 
ĸ = "k" 
ł = "l" 
ľ = "l" 
ĺ = "l" 
ļ = "l" 
ŀ = "l" 
ñ = "n" 
ń = "n" 
ň = "nzz" 
ņ = "n" 
ʼn = "n" 
ŋ = "n" 
ò = "o" 
ó = "o" 
ô = "o" 
õ = "o" 
ö = "oe" 
ø = "o" 
ō = "o" 
ő = "o" 
ŏ = "o" 
œ = "oe" 
ŕ = "r" 
ř = "rzz" 
ŗ = "r" 
ś = "s" 
š = "szz" 
ş = "s" 
ť = "tzz" 
ţ = "t" 
ù = "u" 
ú = "u" 
û = "u" 
ü = "ue" 
ū = "u" 
ů = "u" 
ű = "u" 
ŭ = "u" 
ũ = "u" 
ų = "u" 
ŵ = "w" 
ÿ = "y" 
ý = "y" 
ŷ = "y" 
ż = "z" 
ź = "z" 
ž = "zzz" 
ß = "ss" 
ſ = "ss" 
Α = "A" 
Ά = "A" 
Ἀ = "A" 
Ἁ = "A" 
Ἂ = "A" 
Ἃ = "A" 
Ἄ = "A" 
Ἅ = "A" 
Ἆ = "A" 
Ἇ = "A" 
ᾈ = "A" 
ᾉ = "A" 
ᾊ = "A" 
ᾋ = "A" 
ᾌ = "A" 
ᾍ = "A" 
ᾎ = "A" 
ᾏ = "A" 
Ᾰ = "A" 
Ᾱ = "A" 
Ὰ = "A" 
Ά = "A" 
ᾼ = "A" 
Β = "B" 
Γ = "G" 
Δ = "D" 
Ε = "E" 
Έ = "E" 
Ἐ = "E" 
Ἑ = "E" 
Ἒ = "E" 
Ἓ = "E" 
Ἔ = "E" 
Ἕ = "E" 
Έ = "E" 
Ὲ = "E" 
Ζ = "Z" 
Η = "I" 
Ή = "I" 
Ἠ = "I" 
Ἡ = "I" 
Ἢ = "I" 
Ἣ = "I" 
Ἤ = "I" 
Ἥ = "I" 
Ἦ = "I" 
Ἧ = "I" 
ᾘ = "I" 
ᾙ = "I" 
ᾚ = "I" 
ᾛ = "I" 
ᾜ = "I" 
ᾝ = "I" 
ᾞ = "I" 
ᾟ = "I" 
Ὴ = "I" 
Ή = "I" 
ῌ = "I" 
Θ = "TH" 
Ι = "I" 
Ί = "I" 
Ϊ = "I" 
Ἰ = "I" 
Ἱ = "I" 
Ἲ = "I" 
Ἳ = "I" 
Ἴ = "I" 
Ἵ = "I" 
Ἶ = "I" 
Ἷ = "I" 
Ῐ = "I" 
Ῑ = "I" 
Ὶ = "I" 
Ί = "I" 
Κ = "K" 
Λ = "L" 
Μ = "M" 
Ν = "N" 
Ξ = "KS" 
Ο = "O" 
Ό = "O" 
Ὀ = "O" 
Ὁ = "O" 
Ὂ = "O" 
Ὃ = "O" 
Ὄ = "O" 
Ὅ = "O" 
Ὸ = "O" 
Ό = "O" 
Π = "P" 
Ρ = "R" 
Ῥ = "R" 
Σ = "S" 
Τ = "T" 
Υ = "Y" 
Ύ = "Y" 
Ϋ = "Y" 
Ὑ = "Y" 
Ὓ = "Y" 
Ὕ = "Y" 
Ὗ = "Y" 
Ῠ = "Y" 
Ῡ = "Y" 
Ὺ = "Y" 
Ύ = "Y" 
Φ = "F" 
Χ = "X" 
Ψ = "PS" 
Ω = "O" 
Ώ = "O" 
Ὠ = "O" 
Ὡ = "O" 
Ὢ = "O" 
Ὣ = "O" 
Ὤ = "O" 
Ὥ = "O" 
Ὦ = "O" 
Ὧ = "O" 
ᾨ = "O" 
ᾩ = "O" 
ᾪ = "O" 
ᾫ = "O" 
ᾬ = "O" 
ᾭ = "O" 
ᾮ = "O" 
ᾯ = "O" 
Ὼ = "O" 
Ώ = "O" 
ῼ = "O" 
α = "a" 
ά = "a" 
ἀ = "a" 
ἁ = "a" 
ἂ = "a" 
ἃ = "a" 
ἄ = "a" 
ἅ = "a" 
ἆ = "a" 
ἇ = "a" 
ᾀ = "a" 
ᾁ = "a" 
ᾂ = "a" 
ᾃ = "a" 
ᾄ = "a" 
ᾅ = "a" 
ᾆ = "a" 
ᾇ = "a" 
ὰ = "a" 
ά = "a" 
ᾰ = "a" 
ᾱ = "a" 
ᾲ = "a" 
ᾳ = "a" 
ᾴ = "a" 
ᾶ = "a" 
ᾷ = "a" 
β = "b" 
γ = "g" 
δ = "d" 
ε = "e" 
έ = "e" 
ἐ = "e" 
ἑ = "e" 
ἒ = "e" 
ἓ = "e" 
ἔ = "e" 
ἕ = "e" 
ὲ = "e" 
έ = "e" 
ζ = "z" 
η = "i" 
ή = "i" 
ἠ = "i" 
ἡ = "i" 
ἢ = "i" 
ἣ = "i" 
ἤ = "i" 
ἥ = "i" 
ἦ = "i" 
ἧ = "i" 
ᾐ = "i" 
ᾑ = "i" 
ᾒ = "i" 
ᾓ = "i" 
ᾔ = "i" 
ᾕ = "i" 
ᾖ = "i" 
ᾗ = "i" 
ὴ = "i" 
ή = "i" 
ῂ = "i" 
ῃ = "i" 
ῄ = "i" 
ῆ = "i" 
ῇ = "i" 
θ = "th" 
ι = "i" 
ί = "i" 
ϊ = "i" 
ΐ = "i" 
ἰ = "i" 
ἱ = "i" 
ἲ = "i" 
ἳ = "i" 
ἴ = "i" 
ἵ = "i" 
ἶ = "i" 
ἷ = "i" 
ὶ = "i" 
ί = "i" 
ῐ = "i" 
ῑ = "i" 
ῒ = "i" 
ΐ = "i" 
ῖ = "i" 
ῗ = "i" 
κ = "k" 
λ = "l" 
μ = "m" 
ν = "n" 
ξ = "ks" 
ο = "o" 
ό = "o" 
ὀ = "o" 
ὁ = "o" 
ὂ = "o" 
ὃ = "o" 
ὄ = "o" 
ὅ = "o" 
ὸ = "o" 
ό = "o" 
π = "p" 
ρ = "r" 
ῤ = "r" 
ῥ = "r" 
σ = "s" 
ς = "s" 
τ = "t" 
υ = "y" 
ύ = "y" 
ϋ = "y" 
ΰ = "y" 
ὐ = "y" 
ὑ = "y" 
ὒ = "y" 
ὓ = "y" 
ὔ = "y" 
ὕ = "y" 
ὖ = "y" 
ὗ = "y" 
ὺ = "y" 
ύ = "y" 
ῠ = "y" 
ῡ = "y" 
ῢ = "y" 
ΰ = "y" 
ῦ = "y" 
ῧ = "y" 
φ = "f" 
χ = "x" 
ψ = "ps" 
ω = "o" 
ώ = "o" 
ὠ = "o" 
ὡ = "o" 
ὢ = "o" 
ὣ = "o" 
ὤ = "o" 
ὥ = "o" 
ὦ = "o" 
ὧ = "o" 
ᾠ = "o" 
ᾡ = "o" 
ᾢ = "o" 
ᾣ = "o" 
ᾤ = "o" 
ᾥ = "o" 
ᾦ = "o" 
ᾧ = "o" 
ὼ = "o" 
ώ = "o" 
ῲ = "o" 
ῳ = "o" 
ῴ = "o" 
ῶ = "o" 
ῷ = "o" 
¨ = "" 
΅ = "" 
᾿ = "" 
῾ = "" 
῍ = "" 
῝ = "" 
῎ = "" 
῞ = "" 
῏ = "" 
῟ = "" 
῀ = "" 
῁ = "" 
΄ = "" 
΅ = "" 
` = "" 
῭ = "" 
ͺ = "" 
᾽ = "" 
А = "A" 
Б = "B" 
В = "V" 
Г = "G" 
Д = "D" 
Е = "E" 
Ё = "E" 
Ж = "ZH" 
З = "Z" 
И = "I" 
Й = "I" 
К = "K" 
Л = "L" 
М = "M" 
Н = "N" 
О = "O" 
П = "P" 
Р = "R" 
С = "S" 
Т = "T" 
У = "U" 
Ф = "F" 
Х = "KH" 
Ц = "TS" 
Ч = "CH" 
Ш = "SH" 
Щ = "SHCH" 
Ы = "Y" 
Э = "E" 
Ю = "YU" 
Я = "YA" 
а = "A" 
б = "B" 
в = "V" 
г = "G" 
д = "D" 
е = "E" 
ё = "E" 
ж = "ZH" 
з = "Z" 
и = "I" 
й = "I" 
к = "K" 
л = "L" 
м = "M" 
н = "N" 
о = "O" 
п = "P" 
р = "R" 
с = "S" 
т = "T" 
у = "U" 
ф = "F" 
х = "KH" 
ц = "TS" 
ч = "CH" 
ш = "SH" 
щ = "SHCH" 
ы = "Y" 
э = "E" 
ю = "YU" 
я = "YA" 
Ъ = "" 
ъ = "" 
Ь = "" 
ь = "" 

ð = "d" 
Ð = "D" 
þ = "th" 
Þ = "TH" 

답변

0

이 strtr해야합니다/
쉬 * (t)가 바로 발생합니다. 누군가가 필요하면 잘 작동합니다.)