Example #1
0
 /**
  * Find position of first occurrence of a case-insensitive string.
  *
  * @param string $haystack The string from which to get the position of the first occurrence of $needle.
  * @param string $needle The string to find in $haystack.
  * @param int $offset The position in $haystack to start searching.
  * @return int|bool The numeric position of the first occurrence of $needle in the $haystack string,
  *    or false if $needle is not found.
  */
 public static function stripos($haystack, $needle, $offset = 0)
 {
     if (Multibyte::checkMultibyte($haystack)) {
         $haystack = Multibyte::strtoupper($haystack);
         $needle = Multibyte::strtoupper($needle);
         return Multibyte::strpos($haystack, $needle, $offset);
     }
     return stripos($haystack, $needle, $offset);
 }
Example #2
0
 /**
  * testMultibyteStrpos method
  *
  * @return void
  */
 public function testMultibyteStrpos()
 {
     $string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
     $find = 'F';
     $result = Multibyte::strpos($string, $find);
     $expected = 5;
     $this->assertEquals($expected, $result);
     $string = 'ABCDEFGHIJKLMNOPQFRSTUVWXYZ0123456789';
     $find = 'F';
     $result = Multibyte::strpos($string, $find, 6);
     $expected = 17;
     $this->assertEquals($expected, $result);
     $string = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ';
     $find = 'Å';
     $result = Multibyte::strpos($string, $find);
     $expected = 5;
     $this->assertEquals($expected, $result);
     $string = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÅÙÚÛÜÝÞ';
     $find = 'Å';
     $result = Multibyte::strpos($string, $find, 6);
     $expected = 24;
     $this->assertEquals($expected, $result);
     $string = 'ĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŹŻŽ';
     $find = 'Ċ';
     $result = Multibyte::strpos($string, $find);
     $expected = 5;
     $this->assertEquals($expected, $result);
     $string = 'ĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮIJĴĶĹĻĽĿŁĊŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŹŻŽ';
     $find = 'Ċ';
     $result = Multibyte::strpos($string, $find, 6);
     $expected = 32;
     $this->assertEquals($expected, $result);
     $string = '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
     $find = 'F';
     $result = Multibyte::strpos($string, $find);
     $expected = 37;
     $this->assertEquals($expected, $result);
     $string = '¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈ';
     $find = 'µ';
     $result = Multibyte::strpos($string, $find);
     $expected = 20;
     $this->assertEquals($expected, $result);
     $string = 'ÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬ';
     $find = 'é';
     $result = Multibyte::strpos($string, $find);
     $expected = 32;
     $this->assertEquals($expected, $result);
     $string = 'ĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐ';
     $find = 'Ņ';
     $result = Multibyte::strpos($string, $find);
     $expected = 24;
     $this->assertEquals($expected, $result);
     $string = 'ƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴ';
     $find = 'Ƹ';
     $result = Multibyte::strpos($string, $find);
     $expected = 39;
     $this->assertEquals($expected, $result);
     $string = 'ƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴ';
     $find = 'ƹ';
     $result = Multibyte::strpos($string, $find);
     $expected = 40;
     $this->assertEquals($expected, $result);
     $string = 'əɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯʰʱʲʳʴʵʶʷʸʹʺʻʼ';
     $find = 'ʀ';
     $result = Multibyte::strpos($string, $find);
     $expected = 39;
     $this->assertEquals($expected, $result);
     $string = 'ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛ';
     $find = 'Ї';
     $result = Multibyte::strpos($string, $find);
     $expected = 7;
     $this->assertEquals($expected, $result);
     $string = 'МНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыь';
     $find = 'Р';
     $result = Multibyte::strpos($string, $find);
     $expected = 4;
     $this->assertEquals($expected, $result);
     $string = 'МНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыь';
     $find = 'р';
     $result = Multibyte::strpos($string, $find, 5);
     $expected = 36;
     $this->assertEquals($expected, $result);
     $string = 'فقكلمنهوىيًٌٍَُ';
     $find = 'ن';
     $result = Multibyte::strpos($string, $find);
     $expected = 5;
     $this->assertEquals($expected, $result);
     $string = '✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❌❍❎❏❐❑❒❓❔❕❖❗❘❙❚❛❜❝❞';
     $find = '✿';
     $result = Multibyte::strpos($string, $find);
     $expected = 15;
     $this->assertEquals($expected, $result);
     $string = '⺀⺁⺂⺃⺄⺅⺆⺇⺈⺉⺊⺋⺌⺍⺎⺏⺐⺑⺒⺓⺔⺕⺖⺗⺘⺙⺛⺜⺝⺞⺟⺠⺡⺢⺣⺤⺥⺦⺧⺨⺩⺪⺫⺬⺭⺮⺯⺰⺱⺲⺳⺴⺵⺶⺷⺸⺹⺺⺻⺼⺽⺾⺿⻀⻁⻂⻃⻄⻅⻆⻇⻈⻉⻊⻋⻌⻍⻎⻏⻐⻑⻒⻓⻔⻕⻖⻗⻘⻙⻚⻛⻜⻝⻞⻟⻠';
     $find = '⺐';
     $result = Multibyte::strpos($string, $find);
     $expected = 16;
     $this->assertEquals($expected, $result);
     $string = '⽅⽆⽇⽈⽉⽊⽋⽌⽍⽎⽏⽐⽑⽒⽓⽔⽕⽖⽗⽘⽙⽚⽛⽜⽝⽞⽟⽠⽡⽢⽣⽤⽥⽦⽧⽨⽩⽪⽫⽬⽭⽮⽯⽰⽱⽲⽳⽴⽵⽶⽷⽸⽹⽺⽻⽼⽽⽾⽿';
     $find = '⽤';
     $result = Multibyte::strpos($string, $find);
     $expected = 31;
     $this->assertEquals($expected, $result);
     $string = '눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눴눵눶눷눸눹눺눻눼눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉘뉙뉚뉛뉜뉝뉞뉟뉠뉡뉢뉣뉤뉥뉦뉧뉨뉩뉪뉫뉬뉭뉮뉯뉰뉱뉲뉳뉴뉵뉶뉷뉸뉹뉺뉻뉼뉽뉾뉿늀늁늂늃늄';
     $find = '눻';
     $result = Multibyte::strpos($string, $find);
     $expected = 26;
     $this->assertEquals($expected, $result);
     $string = 'ﹰﹱﹲﹳﹴ﹵ﹶﹷﹸﹹﹺﹻﹼﹽﹾﹿﺀﺁﺂﺃﺄﺅﺆﺇﺈﺉﺊﺋﺌﺍﺎﺏﺐﺑﺒﺓﺔﺕﺖﺗﺘﺙﺚﺛﺜﺝﺞﺟﺠﺡﺢﺣﺤﺥﺦﺧﺨﺩﺪﺫﺬﺭﺮﺯﺰ';
     $find = 'ﺞ';
     $result = Multibyte::strpos($string, $find);
     $expected = 46;
     $this->assertEquals($expected, $result);
     $string = 'ﺱﺲﺳﺴﺵﺶﺷﺸﺹﺺﺻﺼﺽﺾﺿﻀﻁﻂﻃﻄﻅﻆﻇﻈﻉﻊﻋﻌﻍﻎﻏﻐﻑﻒﻓﻔﻕﻖﻗﻘﻙﻚﻛﻜﻝﻞﻟﻠﻡﻢﻣﻤﻥﻦﻧﻨﻩﻪﻫﻬﻭﻮﻯﻰﻱﻲﻳﻴﻵﻶﻷﻸﻹﻺﻻﻼ';
     $find = 'ﻞ';
     $result = Multibyte::strpos($string, $find);
     $expected = 45;
     $this->assertEquals($expected, $result);
     $string = 'abcdefghijklmnopqrstuvwxyz';
     $find = 'k';
     $result = Multibyte::strpos($string, $find);
     $expected = 10;
     $this->assertEquals($expected, $result);
     $string = 'abcdefghijklmnopqrstuvwxyz';
     $find = 'k';
     $result = Multibyte::strpos($string, $find);
     $expected = 10;
     $this->assertEquals($expected, $result);
     $string = '。「」、・ヲァィゥェォャュョッーアイウエオカキク';
     $find = 'ア';
     $result = Multibyte::strpos($string, $find);
     $expected = 16;
     $this->assertEquals($expected, $result);
     $string = 'ケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙';
     $find = 'ハ';
     $result = Multibyte::strpos($string, $find);
     $expected = 17;
     $this->assertEquals($expected, $result);
     $string = 'Ĥēĺļŏ, Ŵőřļď!';
     $find = 'ő';
     $result = Multibyte::strpos($string, $find);
     $expected = 8;
     $this->assertEquals($expected, $result);
     $string = 'Ĥēĺļŏ, Ŵőřļď!';
     $find = 'ő';
     $result = Multibyte::strpos($string, $find);
     $expected = 8;
     $this->assertEquals($expected, $result);
     $string = 'Ĥēĺļŏ, Ŵőřļď!';
     $find = 'őř';
     $result = Multibyte::strpos($string, $find);
     $expected = 8;
     $this->assertEquals($expected, $result);
     $string = 'Hello, World!';
     $find = 'o';
     $result = Multibyte::strpos($string, $find);
     $expected = 4;
     $this->assertEquals($expected, $result);
     $string = 'Hello, World!';
     $find = 'o';
     $result = Multibyte::strpos($string, $find, 5);
     $expected = 8;
     $this->assertEquals($expected, $result);
     $string = 'čini';
     $find = 'n';
     $result = Multibyte::strpos($string, $find);
     $expected = 2;
     $this->assertEquals($expected, $result);
     $string = 'čini';
     $find = 'n';
     $result = Multibyte::strpos($string, $find);
     $expected = 2;
     $this->assertEquals($expected, $result);
     $string = 'moći';
     $find = 'ć';
     $result = Multibyte::strpos($string, $find);
     $expected = 2;
     $this->assertEquals($expected, $result);
     $string = 'moći';
     $find = 'ć';
     $result = Multibyte::strpos($string, $find);
     $expected = 2;
     $this->assertEquals($expected, $result);
     $string = 'državni';
     $find = 'ž';
     $result = Multibyte::strpos($string, $find);
     $expected = 2;
     $this->assertEquals($expected, $result);
     $string = '把百度设为首页';
     $find = '设';
     $result = Multibyte::strpos($string, $find);
     $expected = 3;
     $this->assertEquals($expected, $result);
     $string = '一二三周永龍';
     $find = '周';
     $result = Multibyte::strpos($string, $find);
     $expected = 3;
     $this->assertEquals($expected, $result);
     $string = '一二三周永龍';
     $find = '一周';
     $result = Multibyte::strpos($string, $find);
     $expected = FALSE;
     $this->assertEquals($expected, $result);
 }
 /**
  * Find position of first occurrence of a string.
  *
  * @param string $haystack The string being checked.
  * @param string $needle The position counted from the beginning of haystack.
  * @param integer $offset The search offset. If it is not specified, 0 is used.
  * @param string $encoding Character encoding name to use. If it is omitted, internal character encoding is used.
  * @return integer|boolean The numeric position of the first occurrence of $needle in the $haystack string.
  *    If $needle is not found, it returns false.
  */
 function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
 {
     return Multibyte::strpos($haystack, $needle, $offset);
 }