HEX
Server: nginx/1.22.1
System: Linux VM-4-16-centos 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User: www (1001)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: /www/wwwroot/wen.haoynn.cn/wp-content/themes/ripro/vendor/yurunsoft/pay-sdk/src/Lib/XML.php
<?php
namespace Yurun\PaySDK\Lib;

class XML
{
	public static function fromString($string)
	{
		// 填补 php <= 5.4 的安全漏洞:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_5
		// 记录旧值
		$oldValue = libxml_disable_entity_loader(true);
		// xml解析
		$result = (array)\simplexml_load_string($string, null, LIBXML_NOCDATA | LIBXML_COMPACT);
		// 恢复旧值,防止系统中其它需要用到实体加载的地方失效
		if(false === $oldValue)
		{
			libxml_disable_entity_loader(false);
		}
		return $result;
	}

	public static function toString($data)
	{
		$result = '<xml>';
		if(is_object($data))
		{
			$_data = ObjectToArray::parse($data);
		}
		else
		{
			$_data = &$data;
		}
		foreach($_data as $key => $value)
		{
			if(!\is_scalar($value))
			{
				if(\is_object($value) && \method_exists($value, 'toString'))
				{
					$value = $value->toString();
					if(null === $value)
					{
						continue;
					}
				}
				else if(null !== $value)
				{
					$value = \json_encode($value);
				}
				else
				{
					continue;
				}
			}
			$result .= "<{$key}><![CDATA[{$value}]]></{$key}>";
		}
		return $result . '</xml>';
	}
}