示例#1
0
文件: Bootup.php 项目: hhgr/hhgolf
 /**
  * @param        $s
  * @param int    $normalization_form
  * @param string $leading_combining
  *
  * @return array|bool|mixed|string
  */
 public static function filterString($s, $normalization_form = 4, $leading_combining = '◌')
 {
     if (false !== strpos($s, "\r")) {
         // Workaround https://bugs.php.net/65732
         $s = str_replace(array("\r\n", "\r"), "\n", $s);
     }
     if (preg_match('/[\\x80-\\xFF]/', $s)) {
         if (Normalizer::isNormalized($s, $normalization_form)) {
             $n = '-';
         } else {
             $n = Normalizer::normalize($s, $normalization_form);
             if (isset($n[0])) {
                 $s = $n;
             } else {
                 $s = UTF8::encode('UTF-8', $s);
             }
         }
         if ($s[0] >= "€" && isset($n[0], $leading_combining[0]) && preg_match('/^\\p{Mn}/u', $s)) {
             // Prevent leading combining chars
             // for NFC-safe concatenations.
             $s = $leading_combining . $s;
         }
     }
     return $s;
 }
示例#2
0
/**
 * @param string $str
 * @param int    $form
 *
 * @return bool
 */
function normalizer_is_normalized($str, $form = s\Normalizer::NFC)
{
    return s\Normalizer::isNormalized($str, $form);
}
示例#3
0
文件: UTF8.php 项目: hhgr/hhgolf
 /**
  * normalizes to UTF-8 NFC, converting from CP-1252 when needed
  *
  * @param        $var
  * @param int    $normalization_form
  * @param string $leading_combining
  *
  * @return mixed|string
  */
 public static function filter($var, $normalization_form = 4, $leading_combining = '◌')
 {
     switch (gettype($var)) {
         case 'array':
             foreach ($var as $k => $v) {
                 /** @noinspection AlterInForeachInspection */
                 $var[$k] = self::filter($v, $normalization_form, $leading_combining);
             }
             break;
         case 'object':
             foreach ($var as $k => $v) {
                 $var->{$k} = self::filter($v, $normalization_form, $leading_combining);
             }
             break;
         case 'string':
             if (false !== strpos($var, "\r")) {
                 // Workaround https://bugs.php.net/65732
                 $var = str_replace(array("\r\n", "\r"), "\n", $var);
             }
             if (preg_match('/[\\x80-\\xFF]/', $var)) {
                 if (Normalizer::isNormalized($var, $normalization_form)) {
                     $n = '-';
                 } else {
                     $n = Normalizer::normalize($var, $normalization_form);
                     if (isset($n[0])) {
                         $var = $n;
                     } else {
                         $var = self::encode('UTF-8', $var);
                     }
                 }
                 if ($var[0] >= "�" && isset($n[0], $leading_combining[0]) && preg_match('/^\\p{Mn}/u', $var)) {
                     // Prevent leading combining chars
                     // for NFC-safe concatenations.
                     $var = $leading_combining . $var;
                 }
             }
             break;
     }
     return $var;
 }