• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP libxml_disable_entity_loader函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了PHP中libxml_disable_entity_loader函数的典型用法代码示例。如果您正苦于以下问题:PHP libxml_disable_entity_loader函数的具体用法?PHP libxml_disable_entity_loader怎么用?PHP libxml_disable_entity_loader使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了libxml_disable_entity_loader函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。

示例1: responseMsg

 public function responseMsg()
 {
     //get post data, May be due to the different environments
     $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
     //extract post data
     if (!empty($postStr)) {
         /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
            the best way is to check the validity of xml by yourself */
         libxml_disable_entity_loader(true);
         $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
         $fromUsername = $postObj->FromUserName;
         $toUsername = $postObj->ToUserName;
         $keyword = trim($postObj->Content);
         $time = time();
         $textTpl = "<xml>\n\t\t\t\t\t\t\t<ToUserName><![CDATA[%s]]></ToUserName>\n\t\t\t\t\t\t\t<FromUserName><![CDATA[%s]]></FromUserName>\n\t\t\t\t\t\t\t<CreateTime>%s</CreateTime>\n\t\t\t\t\t\t\t<MsgType><![CDATA[%s]]></MsgType>\n\t\t\t\t\t\t\t<Content><![CDATA[%s]]></Content>\n\t\t\t\t\t\t\t<FuncFlag>0</FuncFlag>\n\t\t\t\t\t\t\t</xml>";
         if (!empty($keyword)) {
             $msgType = "text";
             $contentStr = "Welcome to wechat world!";
             $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
             echo $resultStr;
         } else {
             echo "Input something...";
         }
     } else {
         echo "";
         exit;
     }
 }
开发者ID:sirxun,项目名称:uploadImag,代码行数:28,代码来源:wx_sample.php


示例2: responseMsg

 public function responseMsg()
 {
     //get post data, May be due to the different environments
     $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
     //extract post data
     if (!empty($postStr)) {
         /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
            the best way is to check the validity of xml by yourself */
         libxml_disable_entity_loader(true);
         $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
         $fromUsername = $postObj->FromUserName;
         $toUsername = $postObj->ToUserName;
         $keyword = trim($postObj->Content);
         $time = time();
         $textTpl = "<xml>\n\t\t\t\t\t\t\t<ToUserName><![CDATA[%s]]></ToUserName>\n\t\t\t\t\t\t\t<FromUserName><![CDATA[%s]]></FromUserName>\n\t\t\t\t\t\t\t<CreateTime>%s</CreateTime>\n\t\t\t\t\t\t\t<MsgType><![CDATA[%s]]></MsgType>\n\t\t\t\t\t\t\t<Content><![CDATA[%s]]></Content>\n\t\t\t\t\t\t\t<FuncFlag>0</FuncFlag>\n\t\t\t\t\t\t\t</xml>";
         if (!empty($keyword)) {
             $msgType = "text";
             //$contentStr = "Welcome to wechat world!您的openID:$fromUsername";
             $contentStr = "欢迎关注优派健康。\n";
             $contentStr .= "<a href='https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxca232ac09f1798ef&redirect_uri=http://api.didijiankang.cn/weixin/index.php/Home/Index/bindingAccountForm&response_type=code&scope=snsapi_base&state=123#wechat_redirect'>注册-绑定优派账号</a>。\n";
             $contentStr .= "已绑定账号-<a href='https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxca232ac09f1798ef&redirect_uri=http://api.didijiankang.cn/weixin/index.php/Home/Index/displayMyConcern&response_type=code&scope=snsapi_base&state=123#wechat_redirect'>我的关注</a>。";
             $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
             echo $resultStr;
         } else {
             echo "Input something...";
         }
     } else {
         echo "";
         exit;
     }
 }
开发者ID:shsrain,项目名称:ShsrainWeChat,代码行数:31,代码来源:receiveMsg.php


示例3: stringMatches

 /**
  * {@inheritdoc}
  */
 protected function stringMatches($other)
 {
     $internalErrors = libxml_use_internal_errors(true);
     $disableEntities = libxml_disable_entity_loader(true);
     libxml_clear_errors();
     $dom = new \DOMDocument();
     $dom->preserveWhiteSpace = false;
     $dom->validateOnParse = true;
     if (!@$dom->loadXML($other, LIBXML_NONET | (defined('LIBXML_COMPACT') ? LIBXML_COMPACT : 0))) {
         libxml_disable_entity_loader($disableEntities);
         $this->setXMLConstraintErrors();
         libxml_clear_errors();
         libxml_use_internal_errors($internalErrors);
         return false;
     }
     $dom->normalizeDocument();
     libxml_disable_entity_loader($disableEntities);
     libxml_clear_errors();
     if (false === ($result = @$dom->schemaValidateSource($this->XSD))) {
         $this->setXMLConstraintErrors();
     }
     libxml_clear_errors();
     libxml_use_internal_errors($internalErrors);
     return $result;
 }
开发者ID:GeckoPackages,项目名称:GeckoPHPUnit,代码行数:28,代码来源:XMLMatchesXSDConstraint.php


示例4: parseFull

 private function parseFull($xml, $encoding = null)
 {
     $dom = new \DomDocument();
     if ($encoding) {
         $xml = '<?xml encoding="' . $encoding . '">' . $xml;
     }
     libxml_disable_entity_loader();
     // prevents XXE attacks
     $prevErrorSetting = libxml_use_internal_errors(true);
     if ($dom->loadXML($xml)) {
         if ($encoding) {
             foreach ($dom->childNodes as $item) {
                 if ($item->nodeType == XML_PI_NODE) {
                     $dom->removeChild($item);
                     break;
                 }
             }
             $dom->encoding = $encoding;
         }
         libxml_use_internal_errors($prevErrorSetting);
         return new Proxy(simplexml_import_dom($dom), $this);
     }
     $errors = libxml_get_errors();
     libxml_clear_errors();
     libxml_use_internal_errors($prevErrorSetting);
     $message = 'Incorrect xml passed.';
     foreach ($errors as $error) {
         $message .= '\\nline: ' . $error->line . '; column: ' . $error->column . '; ' . $error->message;
     }
     throw new \arc\UnknownError($message, \arc\exceptions::ILLEGAL_ARGUMENT);
 }
开发者ID:poef,项目名称:ariadne,代码行数:31,代码来源:Parser.php


示例5: validate

 /**
  * @param FeedTypeInterface $type
  * @param OutputInterface   $output
  *
  * @return int
  */
 protected function validate(FeedTypeInterface $type, OutputInterface $output)
 {
     $file = $this->exporter->getFeedFilename($type);
     if (!file_exists($file)) {
         throw new FileNotFoundException(sprintf('<error>Feed "%s" has not yet been exported</error>', $type->getName()));
     }
     $options = LIBXML_NOENT | LIBXML_COMPACT | LIBXML_PARSEHUGE | LIBXML_NOERROR | LIBXML_NOWARNING;
     $this->reader = new \XMLReader($options);
     $this->reader->open($file);
     $this->reader->setParserProperty(\XMLReader::SUBST_ENTITIES, true);
     //        foreach ($type->getNamespaces() as $name => $location) {
     //            $this->reader->setSchema($location);
     //        }
     libxml_clear_errors();
     libxml_use_internal_errors(true);
     libxml_disable_entity_loader(true);
     $progress = new ProgressBar($output);
     $progress->start();
     // go through the whole thing
     while ($this->reader->read()) {
         if ($this->reader->nodeType === \XMLReader::ELEMENT && $this->reader->name === $type->getItemNode()) {
             $progress->advance();
             $this->currentItem = $this->reader->readOuterXml();
         }
         if ($error = libxml_get_last_error()) {
             throw new \RuntimeException(sprintf('[%s %s] %s (in %s - line %d, column %d)', LIBXML_ERR_WARNING === $error->level ? 'WARNING' : 'ERROR', $error->code, trim($error->message), $error->file ? $error->file : 'n/a', $error->line, $error->column));
         }
     }
     $progress->finish();
 }
开发者ID:treehouselabs,项目名称:io-bundle,代码行数:36,代码来源:ExportValidateCommand.php


示例6: responseMsg

 public function responseMsg($conn)
 {
     //get post data, May be due to the different environments
     $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
     //extract post data
     if (!empty($postStr)) {
         /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
            the best way is to check the validity of xml by yourself */
         libxml_disable_entity_loader(true);
         $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
         $msgType = $postObj->MsgType;
         switch ($msgType) {
             case "text":
                 $this->textHandler($postObj, $conn);
                 exit;
             case "image":
                 $this->imageHandler($postObj, $conn);
                 exit;
             case "voice":
                 $this->voiceHandler($postObj, $conn);
                 exit;
             case "shortvideo":
                 $this->shortvideoHandler($postObj, $conn);
                 exit;
             default:
                 echo "";
                 exit;
         }
     } else {
         echo "";
         exit;
     }
 }
开发者ID:JLLLinn,项目名称:chidu4uapp,代码行数:33,代码来源:msgincominghandler.php


示例7: convert

 /**
  * Create a PHP array from the XML file
  *
  * @param String $xmlFile The XML file or a string containing xml to parse
  *
  * @return Array
  *
  * @throws \Propel\Common\Config\Exception\XmlParseException if parse errors occur
  */
 public static function convert($xmlToParse)
 {
     if (!is_string($xmlToParse)) {
         throw new InvalidArgumentException("XmlToArrayConverter::convert method expects an xml file to parse, or a string containing valid xml");
     }
     if (file_exists($xmlToParse)) {
         $xmlToParse = file_get_contents($xmlToParse);
     }
     //Empty xml file returns empty array
     if ('' === $xmlToParse) {
         return array();
     }
     if ($xmlToParse[0] !== '<') {
         throw new InvalidArgumentException('Invalid xml content');
     }
     $currentEntityLoader = libxml_disable_entity_loader(true);
     $currentInternalErrors = libxml_use_internal_errors(true);
     $xml = simplexml_load_string($xmlToParse);
     $errors = libxml_get_errors();
     libxml_clear_errors();
     libxml_use_internal_errors($currentInternalErrors);
     libxml_disable_entity_loader($currentEntityLoader);
     if (count($errors) > 0) {
         throw new XmlParseException($errors);
     }
     $conf = self::simpleXmlToArray($xml);
     return $conf;
 }
开发者ID:dracony,项目名称:forked-php-orm-benchmark,代码行数:37,代码来源:XmlToArrayConverter.php


示例8: read

 /**
  * Convert string with xml data to php array.
  *
  * @throws Exception
  *
  * @param string $string
  *
  * @return array
  */
 public function read($string)
 {
     libxml_use_internal_errors(true);
     libxml_disable_entity_loader(true);
     $result = simplexml_load_string($string, null, LIBXML_IMPORT_FLAGS);
     if (!$result) {
         $errors = libxml_get_errors();
         libxml_clear_errors();
         foreach ($errors as $error) {
             $text = '';
             switch ($error->level) {
                 case LIBXML_ERR_WARNING:
                     $text .= _s('XML file contains warning %1$s:', $error->code);
                     break;
                 case LIBXML_ERR_ERROR:
                     $text .= _s('XML file contains error %1$s:', $error->code);
                     break;
                 case LIBXML_ERR_FATAL:
                     $text .= _s('XML file contains fatal error %1$s:', $error->code);
                     break;
             }
             $text .= trim($error->message) . ' [ Line: ' . $error->line . ' | Column: ' . $error->column . ' ]';
             throw new Exception($text);
         }
     }
     $xml = new XMLReader();
     $xml->xml($string);
     $array = $this->xmlToArray($xml);
     $xml->close();
     return $array;
 }
开发者ID:itnihao,项目名称:zatree-2.2,代码行数:40,代码来源:CXmlImportReader.php


示例9: __construct

 public function __construct($fileUri, $fileName, $disableExternalEntities = true)
 {
     libxml_disable_entity_loader($disableExternalEntities);
     $this->fileName = $fileName;
     $this->wordUri = $fileUri;
     Node::$counter = -1;
 }
开发者ID:sophia2152,项目名称:docx,代码行数:7,代码来源:Docx.class.php


示例10: readBody

 /**
  * {@inheritdoc}
  */
 public function readBody(HttpRequest $request, \ReflectionClass $type) : \Generator
 {
     $input = (yield $request->getBody()->getContents());
     $xml = new \DOMDocument();
     $xml->formatOutput = false;
     \libxml_clear_errors();
     $errorHandling = \libxml_use_internal_errors(true);
     $entities = \libxml_disable_entity_loader(true);
     try {
         $success = @$xml->loadXML($input, \LIBXML_NONET | \LIBXML_NOENT);
         $errors = \libxml_get_errors();
     } catch (\Throwable $e) {
         if (!empty($errors) && $this->logger) {
             $this->logErrors($errors);
         }
         throw new StatusException(Http::BAD_REQUEST, 'Invalid XML input', [], $e);
     } finally {
         \libxml_use_internal_errors($errorHandling);
         \libxml_disable_entity_loader($entities);
     }
     if (!empty($errors) || empty($success) || $xml === NULL || !$xml instanceof \DOMDocument) {
         if (!empty($errors) && $this->logger) {
             $this->logErrors($errors);
         }
         throw new StatusException(Http::BAD_REQUEST, 'Invalid XML input');
     }
     return $xml;
 }
开发者ID:koolkode,项目名称:k1,代码行数:31,代码来源:XmlDocumentReader.php


示例11: validateXML

 /**
  * This function attempts to validate an XML string against the specified schema.
  *
  * It will parse the string into a DOM document and validate this document against the schema.
  *
  * @param string  $xml    The XML string or document which should be validated.
  * @param string  $schema The schema filename which should be used.
  * @param boolean $debug  To disable/enable the debug mode
  *
  * @return string | DOMDocument $dom  string that explains the problem or the DOMDocument
  */
 public static function validateXML($xml, $schema, $debug = false)
 {
     assert('is_string($xml) || $xml instanceof DOMDocument');
     assert('is_string($schema)');
     libxml_clear_errors();
     libxml_use_internal_errors(true);
     if ($xml instanceof DOMDocument) {
         $dom = $xml;
     } else {
         $dom = new DOMDocument();
         $dom = self::loadXML($dom, $xml);
         if (!$dom) {
             return 'unloaded_xml';
         }
     }
     $schemaFile = dirname(__FILE__) . '/schemas/' . $schema;
     $oldEntityLoader = libxml_disable_entity_loader(false);
     $res = $dom->schemaValidate($schemaFile);
     libxml_disable_entity_loader($oldEntityLoader);
     if (!$res) {
         $xmlErrors = libxml_get_errors();
         syslog(LOG_INFO, 'Error validating the metadata: ' . var_export($xmlErrors, true));
         if ($debug) {
             foreach ($xmlErrors as $error) {
                 echo $error->message . "\n";
             }
         }
         return 'invalid_xml';
     }
     return $dom;
 }
开发者ID:bloveing,项目名称:openulteo,代码行数:42,代码来源:Utils.php


示例12: boot

 /**
  * Boot up the Spotweb system
  *
  * @return array (Services_Settings_Container|Dao_Factory_Base|SpotReq)[]
  */
 public function boot()
 {
     SpotTiming::start('bootstrap');
     $daoFactory = $this->getDaoFactory();
     $settings = $this->getSettings($daoFactory, true);
     $spotReq = $this->getSpotReq($settings);
     /*
      * Set the cache path
      */
     if ($settings->exists('cache_path')) {
         $daoFactory->setCachePath($settings->get('cache_path'));
     }
     # if
     /*
      * Run the validation of the most basic systems
      * in Spotweb
      */
     $this->validate(new Services_Settings_Base($settings, $daoFactory->getBlackWhiteListDao()));
     /*
      * Disable the timing part as soon as possible because it 
      * gobbles memory
      */
     if (!$settings->get('enable_timing')) {
         SpotTiming::disable();
     }
     # if
     /*
      * Disable XML entity loader as this might be an
      * security issue.
      */
     libxml_disable_entity_loader(true);
     SpotTiming::stop('bootstrap');
     return array($settings, $daoFactory, $spotReq);
 }
开发者ID:Ernie69,项目名称:spotweb,代码行数:39,代码来源:Bootstrap.php


示例13: getDomDocument

 /**
  * Get a DomDocument instance or return false
  *
  * @static
  * @access public
  * @param  string   $input   XML content
  * @return mixed
  */
 public static function getDomDocument($input)
 {
     if (substr(php_sapi_name(), 0, 3) === 'fpm') {
         // If running with PHP-FPM and an entity is detected we refuse to parse the feed
         // @see https://bugs.php.net/bug.php?id=64938
         if (strpos($input, '<!ENTITY') !== false) {
             return false;
         }
     } else {
         libxml_disable_entity_loader(true);
     }
     libxml_use_internal_errors(true);
     $dom = new DomDocument();
     $dom->loadXml($input, LIBXML_NONET);
     // The document is empty, there is probably some parsing errors
     if ($dom->childNodes->length === 0) {
         return false;
     }
     // Scan for potential XEE attacks using ENTITY
     foreach ($dom->childNodes as $child) {
         if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) {
             if ($child->entities->length > 0) {
                 return false;
             }
         }
     }
     return $dom;
 }
开发者ID:shylar,项目名称:picoFeed,代码行数:36,代码来源:XmlParser.php


示例14: actionPublic

 public function actionPublic($appid, $echostr = null, $signature = null, $timestamp = null, $nonce = null, $encrypt_type = null, $msg_signature = null)
 {
     $this->module->manager->setApp($appid);
     //验证消息
     if (!$this->module->checkSignature($signature, $timestamp, $nonce)) {
         throw new NotFoundHttpException(\Yii::t('common', 'Page not found.'));
     }
     //返回服务器地址设置随机字符串
     if ($echostr) {
         return $echostr;
     }
     //过滤非消息请求
     if (!($postStr = file_get_contents('php://input'))) {
         throw new NotFoundHttpException(\Yii::t('common', 'Page not found.'));
     }
     //获取数据
     libxml_disable_entity_loader(true);
     $postObj = (array) simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
     //确定是否开启安全模式
     $safeMode = $encrypt_type && $msg_signature;
     //安全模式下验证并解密消息
     if ($safeMode && (!isset($postObj['Encrypt']) || !($postObj = $this->module->decryptMessage($msg_signature, $timestamp, $nonce, $postObj['Encrypt'])))) {
         throw new NotFoundHttpException(\Yii::t('common', 'Page not found.'));
     }
     //处理数据并获取回复结果
     $response = $this->module->handleMessage($postObj);
     //加密回复消息
     if ($safeMode && $response) {
         $response = $this->module->encryptMessage($response, $timestamp, $nonce);
     }
     //设置xml格式
     \Yii::$app->response->formatters[Response::FORMAT_XML] = 'yii\\wechat\\components\\XmlResponseFormatter';
     \Yii::$app->response->format = Response::FORMAT_XML;
     return $response;
 }
开发者ID:xiewulong,项目名称:yii2-wechat,代码行数:35,代码来源:ApiController.php


示例15: responseMsg

 public function responseMsg()
 {
     //get post data, May be due to the different environments
     $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
     //extract post data
     if (!empty($postStr)) {
         /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
            the best way is to check the validity of xml by yourself */
         libxml_disable_entity_loader(true);
         $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
         $MsgType = trim($postObj->MsgType);
         switch ($MsgType) {
             case "text":
                 $resultStr = $this->responseText($postObj);
                 break;
             case "image":
                 $resultStr = $this->handleImage($postObj);
                 break;
             case "voice":
                 $resultStr = $this->handleVoice($postObj);
                 break;
             default:
                 $resultStr = "Unknow message type: " . $MsgType;
                 break;
         }
         echo $resultStr;
     } else {
         echo "";
         exit;
     }
 }
开发者ID:v-sir,项目名称:voice--card-for-wechat,代码行数:31,代码来源:index.php


示例16: __construct

 public function __construct($db = null)
 {
     libxml_disable_entity_loader(false);
     if ($db !== null) {
         $this->cache = new cache($db, "xml");
     }
 }
开发者ID:Wabuo,项目名称:monitor,代码行数:7,代码来源:xml.php


示例17: extractMetaData

 /**
  * Extract metadata from document
  *
  * @param \ZipArchive $package    ZipArchive AbstractOpenXML package
  * @return array    Key-value pairs containing document meta data
  */
 protected function extractMetaData(\ZipArchive $package)
 {
     // Data holders
     $coreProperties = array();
     // Prevent php from loading remote resources
     $loadEntities = libxml_disable_entity_loader(true);
     // Read relations and search for core properties
     $relations = simplexml_load_string($package->getFromName("_rels/.rels"));
     // Restore entity loader state
     libxml_disable_entity_loader($loadEntities);
     foreach ($relations->Relationship as $rel) {
         if ($rel["Type"] == self::SCHEMA_COREPROPERTIES) {
             // Found core properties! Read in contents...
             $contents = simplexml_load_string($package->getFromName(dirname($rel["Target"]) . "/" . basename($rel["Target"])));
             foreach ($contents->children(self::SCHEMA_DUBLINCORE) as $child) {
                 $coreProperties[$child->getName()] = (string) $child;
             }
             foreach ($contents->children(self::SCHEMA_COREPROPERTIES) as $child) {
                 $coreProperties[$child->getName()] = (string) $child;
             }
             foreach ($contents->children(self::SCHEMA_DUBLINCORETERMS) as $child) {
                 $coreProperties[$child->getName()] = (string) $child;
             }
         }
     }
     return $coreProperties;
 }
开发者ID:avbrugen,项目名称:uace-laravel,代码行数:33,代码来源:AbstractOpenXML.php


示例18: loadXML

 /**
  * When called non-statically (as an object method) with malicious data, no Exception is thrown, but the object is emptied of all DOM nodes.
  *
  * @param string $source The string containing the XML.
  * @param int $options Bitwise OR of the libxml option constants. http://us3.php.net/manual/en/libxml.constants.php
  *
  * @return bool|DOMDocument true on success, false on failure.  If called statically (E_STRICT error), returns DOMDocument on success.
  */
 public function loadXML($source, $options = 0)
 {
     if ('' === $source) {
         // "If an empty string is passed as the source, a warning will be generated."
         // "This warning is not generated by libxml and cannot be handled using libxml's error handling functions."
         trigger_error('WC_Safe_DOMDocument::loadXML(): Empty string supplied as input', E_USER_WARNING);
         return false;
     }
     $old = null;
     if (function_exists('libxml_disable_entity_loader')) {
         $old = libxml_disable_entity_loader(true);
     }
     $return = parent::loadXML($source, $options);
     if (!is_null($old)) {
         libxml_disable_entity_loader($old);
     }
     if (!$return) {
         return $return;
     }
     // "This method *may* be called statically, but will issue an E_STRICT error."
     $is_this = is_object($this);
     $object = $is_this ? $this : $return;
     if (isset($object->doctype)) {
         if ($is_this) {
             // Get rid of the dangerous input by removing *all* nodes
             while ($this->firstChild) {
                 $this->removeChild($this->firstChild);
             }
         }
         trigger_error('WC_Safe_DOMDocument::loadXML(): Unsafe DOCTYPE Detected', E_USER_WARNING);
         return false;
     }
     return $return;
 }
开发者ID:tccyp001,项目名称:onemore-wordpress,代码行数:42,代码来源:class-wc-safe-domdocument.php


示例19: parseXml

 /**
  * Method parses a mirror.xml file.
  *
  * @param string $file GZIP stream resource
  * @return void
  * @throws \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException in case of XML parser errors
  */
 public function parseXml($file)
 {
     $this->createParser();
     if (!is_resource($this->objXml)) {
         throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException('Unable to create XML parser.', 1342641009);
     }
     // Disables the functionality to allow external entities to be loaded when parsing the XML, must be kept
     $previousValueOfEntityLoader = libxml_disable_entity_loader(true);
     // keep original character case of XML document
     xml_parser_set_option($this->objXml, XML_OPTION_CASE_FOLDING, false);
     xml_parser_set_option($this->objXml, XML_OPTION_SKIP_WHITE, false);
     xml_parser_set_option($this->objXml, XML_OPTION_TARGET_ENCODING, 'utf-8');
     xml_set_element_handler($this->objXml, 'startElement', 'endElement');
     xml_set_character_data_handler($this->objXml, 'characterData');
     if (!($fp = fopen($file, 'r'))) {
         throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException(sprintf('Unable to open file resource %s.', $file), 1342641010);
     }
     while ($data = fread($fp, 4096)) {
         if (!xml_parse($this->objXml, $data, feof($fp))) {
             throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException(sprintf('XML error %s in line %u of file resource %s.', xml_error_string(xml_get_error_code($this->objXml)), xml_get_current_line_number($this->objXml), $file), 1342641011);
         }
     }
     libxml_disable_entity_loader($previousValueOfEntityLoader);
     xml_parser_free($this->objXml);
 }
开发者ID:dachcom-digital,项目名称:TYPO3.CMS,代码行数:32,代码来源:MirrorXmlPushParser.php


示例20: getDoc

 /**
  * @return DOMDocument DOM to manipulate
  */
 public function getDoc()
 {
     if (!$this->doc) {
         // DOMDocument::loadHTML apparently isn't very good with encodings, so
         // convert input to ASCII by encoding everything above 128 as entities.
         if (function_exists('mb_convert_encoding')) {
             $html = mb_convert_encoding($this->html, 'HTML-ENTITIES', 'UTF-8');
         } else {
             $html = preg_replace_callback('/[\\x{80}-\\x{10ffff}]/u', function ($m) {
                 return '&#' . UtfNormal\Utils::utf8ToCodepoint($m[0]) . ';';
             }, $this->html);
         }
         // Workaround for bug that caused spaces before references
         // to disappear during processing: https://phabricator.wikimedia.org/T55086
         // TODO: Please replace with a better fix if one can be found.
         $html = str_replace(' <', '&#32;<', $html);
         libxml_use_internal_errors(true);
         $loader = libxml_disable_entity_loader();
         $this->doc = new DOMDocument();
         $this->doc->strictErrorChecking = false;
         $this->doc->loadHTML($html);
         libxml_disable_entity_loader($loader);
         libxml_use_internal_errors(false);
         $this->doc->encoding = 'UTF-8';
     }
     return $this->doc;
 }
开发者ID:mb720,项目名称:mediawiki,代码行数:30,代码来源:HtmlFormatter.php



注:本文中的libxml_disable_entity_loader函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP libxml_get_errors函数代码示例发布时间:2022-05-15
下一篇:
PHP libxml_clear_errors函数代码示例发布时间:2022-05-15
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap