Example #1
0
 /**
  * Finds position of last occurrence of a string within another, case insensitive
  *
  * @param string $haystack The string from which to get the position of the last occurrence of $needle.
  * @param string $needle The string to find in $haystack.
  * @param integer $offset The position in $haystack to start searching.
  * @return integer|boolean The numeric position of the last occurrence of $needle in the $haystack string,
  *    or false if $needle is not found.
  * @access public
  * @static
  */
 function strripos($haystack, $needle, $offset = 0)
 {
     if (!PHP5 || Multibyte::checkMultibyte($haystack)) {
         $found = false;
         $haystack = Multibyte::strtoupper($haystack);
         $haystack = Multibyte::utf8($haystack);
         $haystackCount = count($haystack);
         $matches = array_count_values($haystack);
         $needle = Multibyte::strtoupper($needle);
         $needle = Multibyte::utf8($needle);
         $needleCount = count($needle);
         $position = $offset;
         while ($found === false && $position < $haystackCount) {
             if (isset($needle[0]) && $needle[0] === $haystack[$position]) {
                 for ($i = 1; $i < $needleCount; $i++) {
                     if ($needle[$i] !== $haystack[$position + $i]) {
                         if ($needle[$i] === $haystack[$position + $i - 1]) {
                             $position--;
                             $found = true;
                             continue;
                         }
                     }
                 }
                 if (!$offset && isset($matches[$needle[0]]) && $matches[$needle[0]] > 1) {
                     $matches[$needle[0]] = $matches[$needle[0]] - 1;
                 } elseif ($i === $needleCount) {
                     $found = true;
                     $position--;
                 }
             }
             $position++;
         }
         return $found ? $position : false;
     }
     return strripos($haystack, $needle, $offset);
 }
Example #2
0
 /**
  * testMultibyteStrtoupper method
  *
  * @return void
  */
 public function testMultibyteStrtoupper()
 {
     $string = '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
     $result = Multibyte::strtoupper($string);
     $expected = '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~';
     $this->assertEquals($expected, $result);
     $string = '!"#$%&\'()*+,-./0123456789:;<=>?@';
     $result = Multibyte::strtoupper($string);
     $expected = '!"#$%&\'()*+,-./0123456789:;<=>?@';
     $this->assertEquals($expected, $result);
     $string = 'à';
     $result = Multibyte::strtoupper($string);
     $expected = 'À';
     $this->assertEquals($expected, $result);
     $string = 'á';
     $result = Multibyte::strtoupper($string);
     $expected = 'Á';
     $this->assertEquals($expected, $result);
     $string = 'â';
     $result = Multibyte::strtoupper($string);
     $expected = 'Â';
     $this->assertEquals($expected, $result);
     $string = 'ã';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ã';
     $this->assertEquals($expected, $result);
     $string = 'ä';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ä';
     $this->assertEquals($expected, $result);
     $string = 'å';
     $result = Multibyte::strtoupper($string);
     $expected = 'Å';
     $this->assertEquals($expected, $result);
     $string = 'æ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Æ';
     $this->assertEquals($expected, $result);
     $string = 'ç';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ç';
     $this->assertEquals($expected, $result);
     $string = 'è';
     $result = Multibyte::strtoupper($string);
     $expected = 'È';
     $this->assertEquals($expected, $result);
     $string = 'é';
     $result = Multibyte::strtoupper($string);
     $expected = 'É';
     $this->assertEquals($expected, $result);
     $string = 'ê';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ê';
     $this->assertEquals($expected, $result);
     $string = 'ë';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ë';
     $this->assertEquals($expected, $result);
     $string = 'ì';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ì';
     $this->assertEquals($expected, $result);
     $string = 'í';
     $result = Multibyte::strtoupper($string);
     $expected = 'Í';
     $this->assertEquals($expected, $result);
     $string = 'î';
     $result = Multibyte::strtoupper($string);
     $expected = 'Î';
     $this->assertEquals($expected, $result);
     $string = 'ï';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ï';
     $this->assertEquals($expected, $result);
     $string = 'ð';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ð';
     $this->assertEquals($expected, $result);
     $string = 'ñ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ñ';
     $this->assertEquals($expected, $result);
     $string = 'ò';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ò';
     $this->assertEquals($expected, $result);
     $string = 'ó';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ó';
     $this->assertEquals($expected, $result);
     $string = 'ô';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ô';
     $this->assertEquals($expected, $result);
     $string = 'õ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Õ';
     $this->assertEquals($expected, $result);
     $string = 'ö';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ö';
     $this->assertEquals($expected, $result);
     $string = 'ø';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ø';
     $this->assertEquals($expected, $result);
     $string = 'ù';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ù';
     $this->assertEquals($expected, $result);
     $string = 'ú';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ú';
     $this->assertEquals($expected, $result);
     $string = 'û';
     $result = Multibyte::strtoupper($string);
     $expected = 'Û';
     $this->assertEquals($expected, $result);
     $string = 'ü';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ü';
     $this->assertEquals($expected, $result);
     $string = 'ý';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ý';
     $this->assertEquals($expected, $result);
     $string = 'þ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Þ';
     $this->assertEquals($expected, $result);
     $string = 'àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ';
     $this->assertEquals($expected, $result);
     $string = 'ā';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ā';
     $this->assertEquals($expected, $result);
     $string = 'ă';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ă';
     $this->assertEquals($expected, $result);
     $string = 'ą';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ą';
     $this->assertEquals($expected, $result);
     $string = 'ć';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ć';
     $this->assertEquals($expected, $result);
     $string = 'ĉ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ĉ';
     $this->assertEquals($expected, $result);
     $string = 'ċ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ċ';
     $this->assertEquals($expected, $result);
     $string = 'č';
     $result = Multibyte::strtoupper($string);
     $expected = 'Č';
     $this->assertEquals($expected, $result);
     $string = 'ď';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ď';
     $this->assertEquals($expected, $result);
     $string = 'đ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Đ';
     $this->assertEquals($expected, $result);
     $string = 'ē';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ē';
     $this->assertEquals($expected, $result);
     $string = 'ĕ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ĕ';
     $this->assertEquals($expected, $result);
     $string = 'ė';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ė';
     $this->assertEquals($expected, $result);
     $string = 'ę';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ę';
     $this->assertEquals($expected, $result);
     $string = 'ě';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ě';
     $this->assertEquals($expected, $result);
     $string = 'ĝ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ĝ';
     $this->assertEquals($expected, $result);
     $string = 'ğ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ğ';
     $this->assertEquals($expected, $result);
     $string = 'ġ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ġ';
     $this->assertEquals($expected, $result);
     $string = 'ģ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ģ';
     $this->assertEquals($expected, $result);
     $string = 'ĥ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ĥ';
     $this->assertEquals($expected, $result);
     $string = 'ħ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ħ';
     $this->assertEquals($expected, $result);
     $string = 'ĩ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ĩ';
     $this->assertEquals($expected, $result);
     $string = 'ī';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ī';
     $this->assertEquals($expected, $result);
     $string = 'ĭ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ĭ';
     $this->assertEquals($expected, $result);
     $string = 'į';
     $result = Multibyte::strtoupper($string);
     $expected = 'Į';
     $this->assertEquals($expected, $result);
     $string = 'ij';
     $result = Multibyte::strtoupper($string);
     $expected = 'IJ';
     $this->assertEquals($expected, $result);
     $string = 'ĵ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ĵ';
     $this->assertEquals($expected, $result);
     $string = 'ķ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ķ';
     $this->assertEquals($expected, $result);
     $string = 'ĺ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ĺ';
     $this->assertEquals($expected, $result);
     $string = 'ļ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ļ';
     $this->assertEquals($expected, $result);
     $string = 'ľ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ľ';
     $this->assertEquals($expected, $result);
     $string = 'ŀ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŀ';
     $this->assertEquals($expected, $result);
     $string = 'ł';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ł';
     $this->assertEquals($expected, $result);
     $string = 'ń';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ń';
     $this->assertEquals($expected, $result);
     $string = 'ņ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ņ';
     $this->assertEquals($expected, $result);
     $string = 'ň';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ň';
     $this->assertEquals($expected, $result);
     $string = 'ŋ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŋ';
     $this->assertEquals($expected, $result);
     $string = 'ō';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ō';
     $this->assertEquals($expected, $result);
     $string = 'ŏ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŏ';
     $this->assertEquals($expected, $result);
     $string = 'ő';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ő';
     $this->assertEquals($expected, $result);
     $string = 'œ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Œ';
     $this->assertEquals($expected, $result);
     $string = 'ŕ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŕ';
     $this->assertEquals($expected, $result);
     $string = 'ŗ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŗ';
     $this->assertEquals($expected, $result);
     $string = 'ř';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ř';
     $this->assertEquals($expected, $result);
     $string = 'ś';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ś';
     $this->assertEquals($expected, $result);
     $string = 'ŝ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŝ';
     $this->assertEquals($expected, $result);
     $string = 'ş';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ş';
     $this->assertEquals($expected, $result);
     $string = 'š';
     $result = Multibyte::strtoupper($string);
     $expected = 'Š';
     $this->assertEquals($expected, $result);
     $string = 'ţ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ţ';
     $this->assertEquals($expected, $result);
     $string = 'ť';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ť';
     $this->assertEquals($expected, $result);
     $string = 'ŧ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŧ';
     $this->assertEquals($expected, $result);
     $string = 'ũ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ũ';
     $this->assertEquals($expected, $result);
     $string = 'ū';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ū';
     $this->assertEquals($expected, $result);
     $string = 'ŭ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŭ';
     $this->assertEquals($expected, $result);
     $string = 'ů';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ů';
     $this->assertEquals($expected, $result);
     $string = 'ű';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ű';
     $this->assertEquals($expected, $result);
     $string = 'ų';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ų';
     $this->assertEquals($expected, $result);
     $string = 'ŵ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŵ';
     $this->assertEquals($expected, $result);
     $string = 'ŷ';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ŷ';
     $this->assertEquals($expected, $result);
     $string = 'ź';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ź';
     $this->assertEquals($expected, $result);
     $string = 'ż';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ż';
     $this->assertEquals($expected, $result);
     $string = 'ž';
     $result = Multibyte::strtoupper($string);
     $expected = 'Ž';
     $this->assertEquals($expected, $result);
     $string = 'āăąćĉċčďđēĕėęěĝğġģĥħĩīĭįijĵķĺļľŀłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž';
     $result = Multibyte::strtoupper($string);
     $expected = 'ĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŹŻŽ';
     $this->assertEquals($expected, $result);
     $string = 'Ĥēĺļŏ, Ŵőřļď!';
     $result = Multibyte::strtoupper($string);
     $expected = 'ĤĒĹĻŎ, ŴŐŘĻĎ!';
     $this->assertEquals($expected, $result);
     $string = 'ἀι';
     $result = mb_strtoupper($string);
     $expected = 'ἈΙ';
     $this->assertEquals($expected, $result);
     $string = 'ἀι';
     $result = Multibyte::strtoupper($string);
     $expected = 'ἈΙ';
     $this->assertEquals($expected, $result);
     $string = 'ԁԃԅԇԉԋԍԏԐԒ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ԀԂԄԆԈԊԌԎԐԒ';
     $this->assertEquals($expected, $result);
     $string = 'աբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆև';
     $result = Multibyte::strtoupper($string);
     $expected = 'ԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖև';
     $this->assertEquals($expected, $result);
     $string = 'ႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅ';
     $this->assertEquals($expected, $result);
     $string = 'ḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕẖẗẘẙẚạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẖẗẘẙẚẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸ';
     $this->assertEquals($expected, $result);
     $string = 'ωkåⅎ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ΩKÅℲ';
     $this->assertEquals($expected, $result);
     $string = 'ωkå';
     $result = Multibyte::strtoupper($string);
     $expected = 'ΩKÅ';
     $this->assertEquals($expected, $result);
     $string = 'ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽⅾⅿↄ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯↃ';
     $this->assertEquals($expected, $result);
     $string = 'ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ';
     $this->assertEquals($expected, $result);
     $string = 'ⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ⰀⰁⰂⰃⰄⰅⰆⰇⰈⰉⰊⰋⰌⰍⰎⰏⰐⰑⰒⰓⰔⰕⰖⰗⰘⰙⰚⰛⰜⰝⰞⰟⰠⰡⰢⰣⰤⰥⰦⰧⰨⰩⰪⰫⰬⰭⰮ';
     $this->assertEquals($expected, $result);
     $string = 'ⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣ';
     $result = Multibyte::strtoupper($string);
     $expected = 'ⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢ';
     $this->assertEquals($expected, $result);
     $string = 'fffiflffifflſtstﬓﬔﬕﬖﬗ';
     $result = Multibyte::strtoupper($string);
     $expected = 'fffiflffifflſtstﬓﬔﬕﬖﬗ';
     $this->assertEquals($expected, $result);
 }
 /**
  * Make a string uppercase
  *
  * @param string $string The string being uppercased.
  * @param string $encoding Character encoding name to use. If it is omitted, internal character encoding is used.
  * @return string with all alphabetic characters converted to uppercase.
  */
 function mb_strtoupper($string, $encoding = null)
 {
     return Multibyte::strtoupper($string);
 }