コード例 #1
0
ファイル: Fluentd.php プロジェクト: cargomedia/cm
 /**
  * @param array $formattedRecord
  * @return array
  */
 protected function _sanitizeRecord(array $formattedRecord)
 {
     array_walk_recursive($formattedRecord, function (&$value, $key) {
         if (is_string($value) && !mb_check_encoding($value, 'UTF-8')) {
             $value = CM_Util::sanitizeUtf($value);
         }
     });
     return $formattedRecord;
 }
コード例 #2
0
ファイル: Post.php プロジェクト: cargomedia/cm
 public function getQuery()
 {
     if ($this->_bodyQuery === null) {
         if ($this->_bodyEncoding == self::ENCODING_JSON) {
             $body = CM_Util::sanitizeUtf($this->getBody());
             if (!is_array($this->_bodyQuery = json_decode($body, true))) {
                 throw new CM_Exception_Invalid('Cannot extract query from body', CM_Exception::WARN, ['body' => $body]);
             }
         } elseif ($this->_bodyEncoding == self::ENCODING_FORM) {
             parse_str($this->getBody(), $this->_bodyQuery);
         } else {
             $this->_bodyQuery = array();
         }
     }
     return array_merge($this->_query, $this->_bodyQuery);
 }
コード例 #3
0
ファイル: Abstract.php プロジェクト: cargomedia/cm
 /**
  * @param string $uri
  * @throws CM_Exception_Invalid
  */
 public function setUri($uri)
 {
     $uriWithHost = $uri;
     if ('/' === substr($uriWithHost, 0, 1)) {
         $uriWithHost = 'http://host' . $uri;
     }
     if (false === ($path = parse_url($uriWithHost, PHP_URL_PATH))) {
         throw new CM_Exception_Invalid('Cannot detect path from url.', null, ['url' => $uriWithHost]);
     }
     if (null === $path) {
         $path = '/';
     }
     $this->setPath($path);
     if (false === ($queryString = parse_url($uriWithHost, PHP_URL_QUERY))) {
         throw new CM_Exception_Invalid('Cannot detect query from url.', null, ['url' => $uriWithHost]);
     }
     mb_parse_str($queryString, $query);
     $querySanitized = [];
     foreach ($query as $key => $value) {
         $key = CM_Util::sanitizeUtf($key);
         if (is_array($value)) {
             array_walk_recursive($value, function (&$innerValue) {
                 if (is_string($innerValue)) {
                     $innerValue = CM_Util::sanitizeUtf($innerValue);
                 }
             });
         } else {
             $value = CM_Util::sanitizeUtf($value);
         }
         $querySanitized[$key] = $value;
     }
     $this->setQuery($querySanitized);
     $this->setLanguageUrl(null);
     $this->_uri = $uri;
 }
コード例 #4
0
ファイル: UtilTest.php プロジェクト: cargomedia/cm
 public function testSanitizeUtf()
 {
     $this->assertSame('?.', CM_Util::sanitizeUtf(pack("H*", 'c32e')));
 }
コード例 #5
0
ファイル: MongoDb.php プロジェクト: cargomedia/cm
 /**
  * @param array $formattedRecord
  * @return array
  */
 protected function _sanitizeRecord(array $formattedRecord)
 {
     $nonUtfBytesList = [];
     array_walk_recursive($formattedRecord, function (&$value, $key) use(&$nonUtfBytesList) {
         if (is_string($value) && !mb_check_encoding($value, 'UTF-8')) {
             $nonUtfBytesList[$key] = unpack('H*', $value)[1];
             $value = CM_Util::sanitizeUtf($value);
         }
     });
     if (!empty($nonUtfBytesList)) {
         $formattedRecord['loggerNotifications']['sanitizedFields'] = [];
         foreach ($nonUtfBytesList as $key => $nonUtfByte) {
             $formattedRecord['loggerNotifications']['sanitizedFields'][$key] = $nonUtfByte;
         }
     }
     return $formattedRecord;
 }