WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Платформа для конвертации и монетизации трафика
функция не описана

SimplePie_Parser::parse() public WP 1.0

{} Это метод класса: SimplePie_Parser{}

Хуков нет.

Возвращает

Null. Ничего.

Использование

$SimplePie_Parser = new SimplePie_Parser();
$SimplePie_Parser->parse( $data, $encoding, $url );

Код SimplePie_Parser::parse() WP 5.5.3

<?php
public function parse(&$data, $encoding, $url = '')
{
	if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
		$doc = new DOMDocument();
		@$doc->loadHTML($data);
		$xpath = new DOMXpath($doc);
		// Check for both h-feed and h-entry, as both a feed with no entries
		// and a list of entries without an h-feed wrapper are both valid.
		$query = '//*[contains(concat(" ", @class, " "), " h-feed ") or '.
			'contains(concat(" ", @class, " "), " h-entry ")]';
		$result = $xpath->query($query);
		if ($result->length !== 0) {
			return $this->parse_microformats($data, $url);
		}
	}

	// Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
	if (strtoupper($encoding) === 'US-ASCII')
	{
		$this->encoding = 'UTF-8';
	}
	else
	{
		$this->encoding = $encoding;
	}

	// Strip BOM:
	// UTF-32 Big Endian BOM
	if (substr($data, 0, 4) === "\x00\x00\xFE\xFF")
	{
		$data = substr($data, 4);
	}
	// UTF-32 Little Endian BOM
	elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00")
	{
		$data = substr($data, 4);
	}
	// UTF-16 Big Endian BOM
	elseif (substr($data, 0, 2) === "\xFE\xFF")
	{
		$data = substr($data, 2);
	}
	// UTF-16 Little Endian BOM
	elseif (substr($data, 0, 2) === "\xFF\xFE")
	{
		$data = substr($data, 2);
	}
	// UTF-8 BOM
	elseif (substr($data, 0, 3) === "\xEF\xBB\xBF")
	{
		$data = substr($data, 3);
	}

	if (substr($data, 0, 5) === '<?xml' && strspn(substr($data, 5, 1), "\x09\x0A\x0D\x20") && ($pos = strpos($data, '?>')) !== false)
	{
		$declaration = $this->registry->create('XML_Declaration_Parser', array(substr($data, 5, $pos - 5)));
		if ($declaration->parse())
		{
			$data = substr($data, $pos + 2);
			$data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' ."\n". $this->declare_html_entities() . $data;
		}
		else
		{
			$this->error_string = 'SimplePie bug! Please report this!';
			return false;
		}
	}

	$return = true;

	static $xml_is_sane = null;
	if ($xml_is_sane === null)
	{
		$parser_check = xml_parser_create();
		xml_parse_into_struct($parser_check, '<foo>&amp;</foo>', $values);
		xml_parser_free($parser_check);
		$xml_is_sane = isset($values[0]['value']);
	}

	// Create the parser
	if ($xml_is_sane)
	{
		$xml = xml_parser_create_ns($this->encoding, $this->separator);
		xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);
		xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0);
		xml_set_object($xml, $this);
		xml_set_character_data_handler($xml, 'cdata');
		xml_set_element_handler($xml, 'tag_open', 'tag_close');

		// Parse!
		if (!xml_parse($xml, $data, true))
		{
			$this->error_code = xml_get_error_code($xml);
			$this->error_string = xml_error_string($this->error_code);
			$return = false;
		}
		$this->current_line = xml_get_current_line_number($xml);
		$this->current_column = xml_get_current_column_number($xml);
		$this->current_byte = xml_get_current_byte_index($xml);
		xml_parser_free($xml);
		return $return;
	}

	libxml_clear_errors();
	$xml = new XMLReader();
	$xml->xml($data);
	while (@$xml->read())
	{
		switch ($xml->nodeType)
		{

			case constant('XMLReader::END_ELEMENT'):
				if ($xml->namespaceURI !== '')
				{
					$tagName = $xml->namespaceURI . $this->separator . $xml->localName;
				}
				else
				{
					$tagName = $xml->localName;
				}
				$this->tag_close(null, $tagName);
				break;
			case constant('XMLReader::ELEMENT'):
				$empty = $xml->isEmptyElement;
				if ($xml->namespaceURI !== '')
				{
					$tagName = $xml->namespaceURI . $this->separator . $xml->localName;
				}
				else
				{
					$tagName = $xml->localName;
				}
				$attributes = array();
				while ($xml->moveToNextAttribute())
				{
					if ($xml->namespaceURI !== '')
					{
						$attrName = $xml->namespaceURI . $this->separator . $xml->localName;
					}
					else
					{
						$attrName = $xml->localName;
					}
					$attributes[$attrName] = $xml->value;
				}
				$this->tag_open(null, $tagName, $attributes);
				if ($empty)
				{
					$this->tag_close(null, $tagName);
				}
				break;
			case constant('XMLReader::TEXT'):

			case constant('XMLReader::CDATA'):
				$this->cdata(null, $xml->value);
				break;
		}
	}
	if ($error = libxml_get_last_error())
	{
		$this->error_code = $error->code;
		$this->error_string = $error->message;
		$this->current_line = $error->line;
		$this->current_column = $error->column;
		return false;
	}

	return true;
}