Example #1
0
  function mb_str_ireplace($search, $replace, $subject) {
    if(is_array($subject)) {
      $ret = array();
      foreach($subject as $key => $val) {
        $ret[$key] = mb_str_ireplace($search, $replace, $val);
      }
      return $ret;
    }

    foreach((array) $search as $key => $s) {
      if($s == '') continue;

      $r = !is_array($replace) ? $replace : (array_key_exists($key, $replace) ? $replace[$key] : '');
      $pos = mb_stripos($subject, $s);
      while($pos !== false) {
        $subject = mb_substr($subject, 0, $pos) . $r . mb_substr($subject, $pos + mb_strlen($s));
        $pos = mb_stripos($subject, $s, $pos + mb_strlen($r));
      }
    }

    return $subject;
  }
Example #2
0
 /**
  *
  * подсветка найденного текста
  * @param str $search_str
  * @param array $h_data_part
  * @param array $fields
  * @param bool $is_from_start_only =true когда поиск должен веститсь только по началу слова
  * @param str $start начальный маркер
  * @param str $end конечный маркер
  */
 static function highlight_h_data($search_str, &$h_data_part = array(), $fields = array(), $is_from_start_only = true, $start = '<span class="highlight">', $end = '</span>')
 {
     if (!is_array($h_data_part)) {
         return;
     }
     foreach ($h_data_part as $k => $itm) {
         if (is_array($itm)) {
             a_handler::highlight_h_data($search_str, $h_data_part[$k], $fields);
         } elseif (in_array($k, $fields)) {
             $h_data_part[$k . '_hl'] = $itm;
             $len = mb_strlen($search_str);
             if (!$is_from_start_only) {
                 $h_data_part[$k . '_hl'] = mb_str_ireplace($search_str, $start . mb_substr($itm, mb_stripos($itm, $search_str), $len) . $end, $itm);
             } elseif (mb_stripos($itm, $search_str) === 0) {
                 //найдено вначале
                 $h_data_part[$k . '_hl'] = $start . mb_substr($itm, 0, $len) . $end . mb_substr($itm, $len, mb_strlen($itm));
                 //  mb_str_replace($search_str, $start.$search_str.$end, $itm);
             }
         }
     }
 }
Example #3
0
 function testMbStrIreplaceReplaceLinefeedSearch()
 {
     $str = "Iñtërnâtiônàli\nzætiøn";
     $replaced = "Iñtërnâtiônàlisetiøn";
     $this->assertSame(mb_str_ireplace("lI\nzÆ", 'lise', $str), $replaced);
 }