Esempio n. 1
0
 /**
  * @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;
 }