mb extends

additional multibyte string functions used throughout WackoWiki


lib/mb_extends/mb_extends.php

Functions

  • utf8_count_chars()
  • utf8_ltrim()
  • utf8_rtrim()
  • utf8_str_pad()
  • utf8_substr_replace()
  • utf8_trim()
  • utf8_ucfirst()
  • utf8_ucwords()
  • utf8_wordwrap()

Unused



<?php

function utf8_strtr($str$from$to)
{
    
$keys    = [];
    
$values    = [];
    
    if (!
is_array($from))
    {
        
preg_match_all('/./u'$from$keys);
        
preg_match_all('/./u'$to$values);
        
$mapping array_combine($keys[0], $values[0]);
    }
    else
    {
        
$mapping $from;
    }

    return 
strtr($str$mapping);
}

function 
mb_strtr($str$from$to ,$chars 'undefined')
{
    
$chars mb_internal_encoding();
    
$_str '';
    
$len mb_strlen($str$chars);

    for(
$i 0$i $len$i++)
    {
        
$flag false;

        for (
$q 0$sf mb_strlen($from$chars), $st mb_strlen($to$chars); $q $sf && $q $st$q++)
        {
            if (
mb_substr($str$i1$chars) == mb_substr($from$q1$chars))
            {
                
$_str $_str mb_substr($to$q1$chars);
                
$flag true;
                break;
            }
        }

        if(!
$flag)
        {
            
$_str $_str mb_substr($str$i1$chars);
        }
    }

    return 
$_str;
}

function 
mb_replace($search$replace$subject, &$count=0)
{
    if (!
is_array($search) && is_array($replace))
    {
        return 
false;
    }

    if (
is_array($subject))
    {
        
// call mb_replace for each single string in $subject
        
foreach ($subject as &$string)
        {
            
$string = &mb_replace($search$replace$string$c);
            
$count += $c;
        }
    }
    else if (
is_array($search))
    {
        if (!
is_array($replace))
        {
            foreach (
$search as &$string)
            {
                
$subject mb_replace($string$replace$subject$c);
                
$count += $c;
            }
        }
        else
        {
            
$n max(count($search), count($replace));

            while (
$n--)
            {
                
$subject mb_replace(current($search), current($replace), $subject$c);
                
$count += $c;
                
next($search);
                
next($replace);
            }
        }
    }
    else
    {
        
$parts mb_split(preg_quote($search), $subject);
        
$count count($parts) - 1;
        
$subject implode($replace$parts);
    }

    return 
$subject;
}