Ejemplo n.º 1
1
function clean_character($c)
{
    $n = mb_ord($c);
    //writeln("c [$c] n [$n]");
    // Basic Latin
    if ($n >= 21 && $n <= 126) {
        return true;
    }
    // Latin-1 Supplement
    if ($n >= 161 && $n <= 255 && $n != 173) {
        return true;
    }
    // Latin Extended-A
    if ($n >= 256 && $n <= 383) {
        return true;
    }
    // Latin Extended-B
    if ($n >= 384 && $n <= 591) {
        return true;
    }
    // IPA Extentions
    if ($n >= 592 && $n <= 687) {
        return true;
    }
    // Greek and Coptic
    if ($n >= 880 && $n <= 1023 && $n != 888 && $n != 889 && $n != 895 && $n != 896 && $n != 897 && $n != 898 && $n != 899 && $n != 907 && $n != 909 && $n != 930) {
        return true;
    }
    // Cyrillic
    if ($n >= 1024 && $n <= 1279) {
        return true;
    }
    // Cyrillic Supplement
    if ($n >= 1280 && $n <= 1319 && $n != 1310 && $n != 1311) {
        return true;
    }
    // Phonetic Extensions
    if ($n >= 7424 && $n <= 7551) {
        return true;
    }
    // Phonetic Extensions Supplement
    if ($n >= 7552 && $n <= 7615) {
        return true;
    }
    // Latin Extended Additional
    if ($n >= 7680 && $n <= 7935) {
        return true;
    }
    // General Punctuation
    if ($n >= 8208 && $n <= 8231 || $n >= 8240 && $n <= 8286) {
        return true;
    }
    // Superscripts and Subscripts
    if ($n >= 8304 && $n <= 8348 && $n != 8306 && $n != 8307) {
        return true;
    }
    // Currency Symbols
    if ($n >= 8352 && $n <= 8378) {
        return true;
    }
    // Letterlike Symbols
    if ($n >= 8448 && $n <= 8527) {
        return true;
    }
    // Number Forms
    if ($n >= 8528 && $n <= 8581 || $n == 8585) {
        return true;
    }
    // Mathematical Operators
    if ($n >= 8704 && $n <= 8959) {
        return true;
    }
    // Supplemental Mathematical Operators
    if ($n >= 10752 && $n <= 11007) {
        return true;
    }
    // Latin Extended-C
    if ($n >= 11360 && $n <= 11391 && $n != 11384) {
        return true;
    }
    // CJK Symbols and Punctuation
    if ($n >= 12289 && $n <= 12351) {
        return true;
    }
    // Hiragana
    if ($n >= 12353 && $n <= 12447 && $n != 12439 && $n != 12440) {
        return true;
    }
    // Katakana
    if ($n >= 12448 && $n <= 12543) {
        return true;
    }
    // Bopomofo
    if ($n >= 12549 && $n <= 12585) {
        return true;
    }
    // Katakana Phonetic Extensions
    if ($n >= 12784 && $n <= 12799) {
        return true;
    }
    // CJK Unified Ideographs Extension A
    if ($n >= 13312 && $n <= 19893) {
        return true;
    }
    // CJK Unified Ideographs
    if ($n >= 19968 && $n <= 40899) {
        return true;
    }
    return false;
}
Ejemplo n.º 2
0
 /**
  * Polyfill for the mb_ord function.
  *
  * @param string $char
  * @param string $encoding
  * @return int
  */
 function mb_ord($char, $encoding = 'UTF-8')
 {
     if ($encoding === 'UCS-4BE') {
         list(, $ord) = strlen($char) === 4 ? @unpack('N', $char) : @unpack('n', $char);
         return $ord;
     } else {
         return mb_ord(mb_convert_encoding($char, 'UCS-4BE', $encoding), 'UCS-4BE');
     }
 }
 /**
  * Compute number of lines used by a multicell of width w
  *
  * @param int    $w   width
  * @param string $txt text
  *
  * @return int
  */
 public function NbLines($w, $txt)
 {
     $cw =& $this->CurrentFont['cw'];
     if ($w == 0) {
         $w = $this->w - $this->rMargin - $this->x;
     }
     $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
     $s = str_replace("\r", '', $txt);
     $nb = mb_strlen($s);
     if ($nb > 0 and $s[$nb - 1] == "\n") {
         $nb--;
     }
     $sep = -1;
     $i = 0;
     $j = 0;
     $l = 0;
     $nl = 1;
     while ($i < $nb) {
         $c = $s[$i];
         if ($c == "\n") {
             $i++;
             $sep = -1;
             $j = $i;
             $l = 0;
             $nl++;
             continue;
         }
         if ($c == ' ') {
             $sep = $i;
         }
         $l += isset($cw[mb_ord($c)]) ? $cw[mb_ord($c)] : 0;
         if ($l > $wmax) {
             if ($sep == -1) {
                 if ($i == $j) {
                     $i++;
                 }
             } else {
                 $i = $sep + 1;
             }
             $sep = -1;
             $j = $i;
             $l = 0;
             $nl++;
         } else {
             $i++;
         }
     }
     return $nl;
 }
Ejemplo n.º 4
0
 /**
  * Checks if a character is an SQL identifier
  *
  * @param string  $c            character to check for
  * @param boolean $dot_is_valid whether the dot character is valid or not
  *
  * @return boolean  whether the character is an SQL identifier or not
  */
 public function isSqlIdentifier($c, $dot_is_valid = false)
 {
     return $this->isAlnum($c) || ($ord_c = mb_ord($c)) && $ord_c >= 192 && $ord_c != 215 && $ord_c != 249 || $c == '_' || $c == '$' || $dot_is_valid != false && $c == '.';
 }
Ejemplo n.º 5
0
function mb_rc4($key, $str)
{
    if (extension_loaded('mbstring') === true) {
        mb_language('Neutral');
        mb_internal_encoding('UTF-8');
        mb_detect_order(array('UTF-8', 'ISO-8859-15', 'ISO-8859-1', 'ASCII'));
    }
    $s = array();
    for ($i = 0; $i < 256; $i++) {
        $s[$i] = $i;
    }
    $j = 0;
    for ($i = 0; $i < 256; $i++) {
        $j = ($j + $s[$i] + mb_ord(mb_substr($key, $i % mb_strlen($key), 1))) % 256;
        $x = $s[$i];
        $s[$i] = $s[$j];
        $s[$j] = $x;
    }
    $i = 0;
    $j = 0;
    $res = '';
    for ($y = 0; $y < mb_strlen($str); $y++) {
        $i = ($i + 1) % 256;
        $j = ($j + $s[$i]) % 256;
        $x = $s[$i];
        $s[$i] = $s[$j];
        $s[$j] = $x;
        $res .= mb_chr(mb_ord(mb_substr($str, $y, 1)) ^ $s[($s[$i] + $s[$j]) % 256]);
    }
    return $res;
}
Ejemplo n.º 6
0
/**
 * Returns the column number based on the Excel name.
 * So "A" = 1, "Z" = 26, "AA" = 27, etc.
 *
 * Basically this is a base26 (A-Z) to base10 (0-9) conversion.
 * It iterates through all characters in the column name and
 * calculates the corresponding value, based on character value
 * (A = 1, ..., Z = 26) and position in the string.
 *
 * @param string $name column name(i.e. "A", or "BC", etc.)
 *
 * @return int The column number
 * @access  public
 */
function PMA_getColumnNumberFromName($name)
{
    if (empty($name)) {
        return 0;
    }
    $name = mb_strtoupper($name);
    $num_chars = mb_strlen($name);
    $column_number = 0;
    for ($i = 0; $i < $num_chars; ++$i) {
        // read string from back to front
        $char_pos = $num_chars - 1 - $i;
        // convert capital character to ASCII value
        // and subtract 64 to get corresponding decimal value
        // ASCII value of "A" is 65, "B" is 66, etc.
        // Decimal equivalent of "A" is 1, "B" is 2, etc.
        $number = (int) (mb_ord($name[$char_pos]) - 64);
        // base26 to base10 conversion : multiply each number
        // with corresponding value of the position, in this case
        // $i=0 : 1; $i=1 : 26; $i=2 : 676; ...
        $column_number += $number * PMA_Util::pow(26, $i);
    }
    return $column_number;
}
Ejemplo n.º 7
0
function charCodeAt($str, $pos)
{
    return mb_ord(mb_substr($str, $pos, 1));
}
Ejemplo n.º 8
0
 /**
  * Экранирование спецсимволов в строке формата даты
  *
  * @param string $str
  * @return string
  */
 protected static function date_escape($str)
 {
     $chars_list = preg_split('##su', $str, -1, PREG_SPLIT_NO_EMPTY);
     $string = "";
     foreach ($chars_list as $char) {
         $ord = mb_ord($char);
         if ($ord >= 65 and $ord <= 90 or $ord >= 97 and $ord <= 122) {
             $string .= "\\" . $char;
         } else {
             $string .= $char;
         }
     }
     return $string;
 }
Ejemplo n.º 9
0
function charCodeAt($str, $pos)
{
    return mb_ord($str[$pos]);
}
Ejemplo n.º 10
0
 function charCodeAt($index)
 {
     $v = mb_substr($this->S, $index, 1);
     return $v === false ? 0 : mb_ord($v);
 }