Exemplo n.º 1
0
 /**
  * normalize vcard source string after parsing
  *
  * @param  string $vcardStr vcard source string
  * @return string
  */
 public function normalizeSource($vcardStr)
 {
     ArgValidator::assert($vcardStr, 'string');
     /* convert chars outside ASCII range to <U+xxxx> expression */
     if (preg_match_all('/[^\\x{0000}-\\x{007F}]/u', $vcardStr, $matches)) {
         $conversion = array();
         foreach (array_unique($matches[0]) as $char) {
             $conversion[$char] = '<U+' . strtoupper(dechex(Utf8::uord($char))) . '>';
         }
         $vcardStr = strtr($vcardStr, $conversion);
     }
     /* workaround to enable comma-separated values */
     $vcardStr = strtr($vcardStr, array(self::JOINCHAR => ','));
     return $vcardStr;
 }
Exemplo n.º 2
0
 /**
  * normalize vcard source for parsing
  *
  * @param  string $vcardStr vcard source string
  * @return string
  */
 public function normalizeSource($vcardStr)
 {
     ArgValidator::assert($vcardStr, 'string');
     if (strpos($vcardStr, 'BEGIN:') !== 0) {
         return '';
     }
     /* convert <U+xxxx> to characters */
     if (preg_match_all('/<[uU]\\+([0-9A-Fa-f]{4})>/', $vcardStr, $matches, PREG_SET_ORDER)) {
         $conversions = array();
         foreach ($matches as $match) {
             $conversions[$match[0]] = Utf8::uchr(hexdec($match[1]));
         }
         $vcardStr = strtr($vcardStr, $conversions);
     }
     /* strip extra leading spaces */
     $vcardStr = preg_replace('/\\n[\\s]+/', "\n ", $vcardStr);
     return $vcardStr;
 }