Warning: filemtime(): stat failed for ./data/secure/tokens/026fd8b0244c9052e1a11b4487c9c1f5c93f7f179b685d5693642a82d41da5b1b6f7792de6b31947ecbb3f849a2075bdb225e25d8a46830240b398ae116160a8.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/0a2c46f33ffed63385b66d1b382f8f11416b32afe03026ddbe42abaccd6e0d1aebf02f3019e33d05418edb3334bc5a16f2e16c248886e38f778b89b8f0139c64.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/0ae375be01e6fa25872702cc163fd07a8faee61f72b2265fc2719bc8132f22856214e6605d2c93846c2ce003e117f770da2b205d7dfe60a692093be700e99fe6.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/0b5e98134737be40520995e20c9c81e805ffef1b9d77e8b365768b03a850c33967f02399a41f3d6b19546cc5280e14677de7bcb1e688cf3cb54c18293fe22f15.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/0ca19d9db4a004f1167d02a4e0b45f6e60aba05b208ca483a582fb47da5a49a34ea51704cb7e7904e68ae253e2b6e5eeaad7cc78c663cf883c8a909051056357.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/0ed8f43efebbcbd72d42f2112ddd12a32f3ddbf11fb1aec878fe2be38a0865f44ef51f3c46ebce39f93a44b55815f669dabc52b60b33a9103b7ccfb8e000bce4.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/151ea6bf564a7b1d186c941e7a73a5ae2f0c2e63c38b16f573c6dddc6d8dc25c52793f197867d10f61e723cce4f0ce81167bf0668575530416cf128d92334ec1.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/1c1dd201fccee1a6e890061cca2b4e4968e226f5d6b755c1ba1be8a126af4a9c7d8cdf680708ca063827d53bb87fb715b9d0afd24c4d3a21438d579683ced6d6.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: unlink(./data/secure/tokens/1f1cbe1c1ab6fbdd8a7ff9357e25a32fc766c47f62da7f5de053831683b4148c62997b766f5f1738921c687db787bcef7a1ec9fc62d99a156f78d30b2edad6ee.token): No such file or directory in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 865

Warning: filemtime(): stat failed for ./data/secure/tokens/2b37cba3e90108b462efe228640c2038e742299fdbdb8bfb39ea1f1b5888e2f96604eb69558a1fc72da65bcdbe8547cc9c4265cf41bce3cbc9834e5d2c721a93.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/2c2ebb2facd31d1a646ef8cfb143e8e82fbe3b7676c0bd5b5d5c8673457e4896401939b5071da466d55c8b18f9beb70088963f5ce7881e3f80f2f745b5a22863.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/2d1086ad9ec530451219741a8a74a8ba1b2b7ecd12818a662c9d0a70b03113f548181209f48d16d5465da925d37be34c8276b55f0af3fff25b9a9368c61ad0eb.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/33c5f1a1df7413899bcf4e17473bae6bae871c937a8c4b46e50c7d150501c1e94814937c712c748e1717fdbbea9ed385e9fe5f5ade9e58394acc7c480756ee28.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: unlink(./data/secure/tokens/34b7624b06a8f1d5a16e9c922690ae65eee7c63565ac6462d4b693eea5f541d8f574ca6ddddee795dbac0970129244eb079744e480bb13924e7a1f0e82c3c4e3.token): No such file or directory in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 865

Warning: filemtime(): stat failed for ./data/secure/tokens/3dd77fa7cfb95cb88dc4417241d8375b41e06d360613c7207bff001e203a24906c2a4ba9e8e79c17bb22b9ab2e385e90e53b564905c181cfc191da41178104f2.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: unlink(./data/secure/tokens/3eeaeab58e697ba267fb39f87098ecd7f28d6f634393cb81e670377858251ea69700db86d996af6a3600f26386db6c53b5caa1f2f82bd044af324e1f80b1b890.token): No such file or directory in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 865

Warning: filemtime(): stat failed for ./data/secure/tokens/4649d1a4388f95ffe2cbca7c4691c7f5923ad8a6b095d3e26bab449ce13c9cf3e661cf2ff45a7341561ca14133f9c7a450abe6de6a917637b2e5d7d23c7788d5.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/4b4ecb498984c055fdf03ccfbb1fa1daf922aefd25299727992d7084ed8e6942f9f67731909a513842f713d4f7e098f660bd5d2f3fe867cd76b5111fcafa1f9c.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/4cbfbc272a9f990758b79bb18c1a4484249ebf5b1d2f009e756b3bdae0b120fe2a9f330bdc6cc615b2699aa12cd95b246f97f1a09929a7b915bdc37fb9b01770.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/56d77b07ab5dad16ced50884413caae40d3e5a22961c62f0a11a861e7c29a2bebe1e3d28d1bbf88d8d9891de0e36935d1a1bc4dcb3bb866532db79ebe6af9d29.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/60d3a39b4ed293c3610b23fffede57693bc6a99165e0f5095e56fbe5ceac116be32c2edb25b84b42cdcf44c7a1e570b104bad311fa877481d7c421859d9cd2a4.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/6256ef5bc8cd74d67070a9528824ba5ec827d4de4d043052bbf34c4dd250959bc44c52717c2cab0a70e7f4f7cfa7dd0c61285774434cbf4ba44ef3e1b90e583c.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: unlink(./data/secure/tokens/6705de5bc2313b39b4887346dfdc33e7bbe058e4cfd983c436c0f6fc3656f3299884b53b08c0afce306ea6d862eb90c463b18fd20c13e9b21616d42e3c0ecf72.token): No such file or directory in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 865

Warning: filemtime(): stat failed for ./data/secure/tokens/69dc0b77a0ec51600b35813946dafc01df4bf2797f7061f06bc7916f4d45b9b7bf6e8eb1c32e45f587b412cd5d357904729c3424ecfe6f0567be7ffbce1a7380.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/77789ca820fae6babd6dc6164c3823d72d78c1ca1619cfa6fc8509eef1a536d317f0f6f9405b53f86b56d3173da84c5d90973966ab0584196813ad7952abb295.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/788ceb7cf601f1b9d6a3fd05c7e53bb50cf2116a42f59c5cdd7a79ae1f4e1e1bd543fa79f4810ba70cc943d5f5578544f8bdc8f90ac6a1a4f33efe7c99f37873.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/789b917537fa80e6bfe0658c70fedd01704e1ab63dcbc6b4749ecca06a6699b571325a23cd93c97df259a51bc240f9aad82b62e6084aee8cc9f5ab6507c516bc.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/79f3dde938f5be22712c319c487e771eff06fd1c8dca7810c19b70af765533c7a0b6cecc74a5f55c8f5b0a8ff91feb8feb73ec3d9946eaf97a27f7f86ec4dbff.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/8380747cc8d88ef012b1d3ced03fe927541d64bede51f770c4494351245155735640bf38950c7d7454d0313ac3e0c41dce11ab00b4b3e0fc1133e5fe194af4d4.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/8a5927ae91a6778631849ac46d03d2cac777a8c25a39436b825d409573f15e2a9d97cf8170d51ac4eaefa7f21094205d58a11b783e66471ce307f47481b41dcf.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: unlink(./data/secure/tokens/8d08106fb196476c50556ec565850f2b7a9c62988c6f53304edc4f128f17ac4e73485dc05ab901d3404156248d1210cb3cd4cfb497c3e52a1d5c8be9ab6b45bc.token): No such file or directory in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 865

Warning: filemtime(): stat failed for ./data/secure/tokens/9a2d53138a948e3f3a4e70923db1326dd76ab579bc32dbb92cd37f69236260345d5ff2cb672e54c5ab6ff3f68ccb13b7e04949bc7729d0c5b23a330ddd384218.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/9dbabc6e7e011e7f7e0605cbaa47fb2654c8e5e35b0fee6cb250ae12703b3754d80c11a4002be4842d32333ca9ddfdc4b6168c81a54dabb6f3ae7dd5003947b2.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: unlink(./data/secure/tokens/a4a51ff6ec51cf9e1b33205a3fce6eed82160da015b68dade6aea5e7cc58ae61a39350f4bdc9a9d9fd5622e20657f724e05763e422cfcfc5d0fabd22d26e4792.token): No such file or directory in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 865

Warning: filemtime(): stat failed for ./data/secure/tokens/a98d28f5ff2d83186b5ac6fbf9cd52376fb341c7bd822353b7ee66535ebe9d29cb670a21ab630356e99b5bd5ea0b2c595f1392f1373821a0a16e95604ccc3a5f.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/b75533a470a2cb9d66dd54bb49062f1f9db886d9076622ce0ece2f6583f81dbc1b3c33868ef8728a310bafac436c6e5445382c66ec2b84a7ac7ec02468efc24d.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/bc5ad66d4fbfdca5bf28451339bf367156ddd7314f88d0e8257dd8e867f566cd7f0fa736775c7a1bb3cfe53a4ca3db6009f71891df8fe69003912e10cc6c6d1d.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/bdd8d006fb72ede6704e92fb244056fb5e23bbf511c503feb579ddef426f60b62b4780bbe67414d23cf6ce9a979ab74ef7bc81e26452fe3255c6c814d7255bfe.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: unlink(./data/secure/tokens/d6a99b987d7f490a5f892ee373be32e78e260716145008d98c59927011f642939ba13737997e2748c101e2a2601e810a29c6d97d6748e1a80b6566daa1306c72.token): No such file or directory in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 865

Warning: filemtime(): stat failed for ./data/secure/tokens/fded9649b602ccd10cc95274caaa913ab97a0d468bf13d3a9b361b983b8547fb930d80868bc7cb9f572c7b361d93b5ae7c7f18ed3459dfcdf411bada99d67c4c.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831

Warning: filemtime(): stat failed for ./data/secure/tokens/ffbf332619a1132a36febe5a1dbe338e2000b063367fd28202c2f7d5c8fa8465ec9948218c1228b92dad7e836f08f314828da75d33882a87dcf38e07dd517f3a.token in /home/sigesthaxo/snippetvamp/assets/php/class/Helium_secure_class.php on line 831
', '\#', '\+', '\-', '\.', '\!');
			foreach ($escape_sequences as $index => $escape_sequence)
			{
				if (strpos($text, $escape_sequence) !== FALSE)
				{
					$code = "\x1A".'\\'.$index.';';
					$text = str_replace($escape_sequence, $code, $text);
					$escape_sequence_map[$code] = $escape_sequence;
				}
			}
		}

		# ~

		$text = preg_replace('/\n\s*\n/', "\n\n", $text);
		$text = trim($text, "\n");
		$lines = explode("\n", $text);
		$text = parse_block_elements($lines);

		# decodes escape sequences
		if (!empty($escape_sequence_map)){
			foreach ($escape_sequence_map as $code => $escape_sequence)
			{
				$text = str_replace($code, $escape_sequence[1], $text);
			}
		}

		$text = rtrim($text, "\n");
		return $text;
	}

	function parse_block_elements(array $lines, $context = '')
	{
		$elements = array();
		$element = array('type' => '',);

		foreach ($lines as $line)
		{
			# markup (open)
			if ($element['type'] === 'markup' and ! isset($element['closed']))
			{
				if (preg_match('{<'.$element['subtype'].'>$}', $line)) # opening tag
				{
					$element['depth']++;
				}

				if (preg_match('{$}', $line)) # closing tag
				{
					$element['depth'] > 0
						? $element['depth']--
						: $element['closed'] = true;
				}
				$element['text'] .= "\n".$line;
				continue;
			}

			# *

			if ($line === '')
			{
				$element['interrupted'] = true;
				continue;
			}

			# blockquote (existing)
			if ($element['type'] === 'blockquote' and ! isset($element['interrupted']))
			{
				$line = preg_replace('/^[ ]*>[ ]?/', '', $line);
				$element['lines'] []= $line;
				continue;
			}

			# list (existing)
			if ($element['type'] === 'li')
			{
				if (preg_match('/^([ ]{0,3})(\d+[.]|[*+-])[ ](.*)/', $line, $matches))
				{
					if ($element['indentation'] !== $matches[1])
					{
						$element['lines'] []= $line;
					}
					else
					{
						unset($element['last']);
						$elements []= $element;
						$element = array(
							'type' => 'li',
							'indentation' => $matches[1],
							'last' => true,
							'lines' => array(
								preg_replace('/^[ ]{0,4}/', '', $matches[3]),
							),
						);
					}
					continue;
				}

				if (isset($element['interrupted']))
				{
					if ($line[0] === ' ')
					{
						$element['lines'] []= '';
						$line = preg_replace('/^[ ]{0,4}/', '', $line);
						$element['lines'] []= $line;
						continue;
					}
				}
				else
				{
					$line = preg_replace('/^[ ]{0,4}/', '', $line);
					$element['lines'] []= $line;
					continue;
				}
			}

			# paragraph
			if ($line[0] >= 'a' or $line[0] >= 'A' and $line[0] <= 'Z')
			{
				goto paragraph;
			}

			# code block
			if ($line[0] === ' ' and preg_match('/^[ ]{4}(.*)/', $line, $matches))
			{
				if (trim($line) === ''){continue;}
				if ($element['type'] === 'code')
				{
					if (isset($element['interrupted']))
					{
						$element['text'] .= "\n";
						unset ($element['interrupted']);
					}
					$element['text'] .= "\n".$matches[1];
				}
				else
				{
					$elements []= $element;
					$element = array(
						'type' => 'code',
						'text' => $matches[1],
					);
				}
				continue;
			}

			# setext heading (---)

			if ($line[0] === '-' and $element['type'] === 'p' and ! isset($element['interrupted']) and preg_match('/^[-]+[ ]*$/', $line))
			{
				$element['type'] = 'h.';
				$element['level'] = 2;
				continue;
			}

			# atx heading (#)

			if ($line[0] === '#' and preg_match('/^(#{1,6})[ ]*(.+?)[ ]*#*$/', $line, $matches))
			{
				$elements []= $element;
				$level = strlen($matches[1]);
				$element = array(
					'type' => 'h.',
					'text' => $matches[2],
					'level' => $level,
				);
				continue;
			}

			# setext heading (===)
			if ($line[0] === '=' and $element['type'] === 'p' and ! isset($element['interrupted']) and preg_match('/^[=]+[ ]*$/', $line))
			{
				$element['type'] = 'h.';
				$element['level'] = 1;
				continue;
			}

			$deindented_line = $line[0] !== ' ' ? $line : ltrim($line);
			if ($deindented_line === ''){continue;}

			# reference
			if ($deindented_line[0] === '[' and preg_match('/^\[(.+?)\]:[ ]*([^ ]+)/', $deindented_line, $matches))
			{
				$label = strtolower($matches[1]);
				$url = trim($matches[2], '<>');
				$reference_map[$label] = $url;
				continue;
			}

			# blockquote
			if ($deindented_line[0] === '>' and preg_match('/^>[ ]?(.*)/', $deindented_line, $matches))
			{
				if ($element['type'] === 'blockquote')
				{
					if (isset($element['interrupted']))
					{
						$element['lines'] []= '';
						unset($element['interrupted']);
					}
					$element['lines'] []= $matches[1];
				}
				else
				{
					$elements []= $element;
					$element = array(
						'type' => 'blockquote',
						'lines' => array(
							$matches[1],
						),
					);
				}
				continue;
			}

			# markup

			if ($deindented_line[0] === '<')
			{
				# self-closing tag
				if (preg_match('{^<.+?/>$}', $deindented_line))
				{
					$elements []= $element;
					$element = array(
						'type' => '',
						'text' => $deindented_line,
					);
					continue;
				}

				# opening tag
				if (preg_match('{^<(\w+)(?:[ ].*?)?>}', $deindented_line, $matches))
				{
					$elements []= $element;
					$element = array(
						'type' => 'markup',
						'subtype' => strtolower($matches[1]),
						'text' => $deindented_line,
						'depth' => 0,
					);
					preg_match('{\s*$}', $deindented_line) and $element['closed'] = true;
					continue;
				}
			}

			# horizontal rule
			if (preg_match('/^([-*_])([ ]{0,2}\1){2,}[ ]*$/', $deindented_line))
			{
				$elements []= $element;
				$element = array('type' => 'hr',);
				continue;
			}

			# list item
			if (preg_match('/^([ ]*)(\d+[.]|[*+-])[ ](.*)/', $line, $matches))
			{
				$elements []= $element;
				$element = array(
					'type' => 'li',
					'ordered' => isset($matches[2][1]),
					'indentation' => $matches[1],
					'last' => true,
					'lines' => array(
						preg_replace('/^[ ]{0,4}/', '', $matches[3]),
					),
				);
				continue;
			}

			paragraph:
			if ($element['type'] === 'p')
			{
				if (isset($element['interrupted']))
				{
					$elements []= $element;
					$element['text'] = $line;
					unset($element['interrupted']);
				}
				else {$element['text'] .= "\n".$line;}
			}
			else
			{
				$elements []= $element;
				$element = array(
					'type' => 'p',
					'text' => $line,
				);
			}
		}

		$elements []= $element;
		array_shift($elements);

		
		$markup = '';
		foreach ($elements as $index => $element)
		{
			switch ($element['type'])
			{
				case 'p':
					$text = parse_span_elements($element['text']);
					$text = preg_replace('/[ ]{2}\n/', '
'."\n", $text); if ($context === 'li' and $index === 0) { if (isset($element['interrupted'])) { $markup .= "\n".'

'.$text.'

'."\n";} else {$markup .= $text;} } else{$markup .= '

'.$text.'

'."\n";} break; case 'blockquote': $text =parse_block_elements($element['lines']); $markup .= '
'."\n".$text.'
'."\n"; break; case 'code': $text = htmlentities($element['text'], ENT_NOQUOTES); strpos($text, "\x1A\\") !== FALSE and $text = strtr($text, $escape_sequence_map); $markup .= '
'.$text.'
'."\n"; break; case 'h.': $text = parse_span_elements($element['text']); $markup .= ''.$text.''."\n"; break; case 'hr': $markup .= '
'."\n"; break; case 'li': if (isset($element['ordered'])) # first { $list_type = $element['ordered'] ? 'ol' : 'ul'; $markup .= '<'.$list_type.'>'."\n"; } if (isset($element['interrupted']) and ! isset($element['last'])) { $element['lines'] []= ''; } $text = parse_block_elements($element['lines'], 'li'); $markup .= '
  • '.$text.'
  • '."\n"; isset($element['last']) and $markup .= ''."\n"; break; default: $markup .= $element['text']."\n"; } } return $markup; } function parse_span_elements($text) { $map = array(); $index = 0; # code span if (strpos($text, '`') !== FALSE and preg_match_all('/`(.+?)`/', $text, $matches, PREG_SET_ORDER)) { foreach ($matches as $matches) { $element_text = $matches[1]; $element_text = htmlentities($element_text, ENT_NOQUOTES); # decodes escape sequences $escape_sequence_map and strpos($element_text, "\x1A") !== FALSE and $element_text = strtr($element_text, $escape_sequence_map); # composes element $element = ''.$element_text.''; # encodes element $code = "\x1A".'$'.$index; $text = str_replace($matches[0], $code, $text); $map[$code] = $element; $index ++; } } # inline link or image if (strpos($text, '](') !== FALSE and preg_match_all('/(!?)(\[((?:[^\[\]]|(?2))*)\])\((.*?)\)/', $text, $matches, PREG_SET_ORDER)) # inline { foreach ($matches as $matches) { $url = $matches[4]; strpos($url, '&') !== FALSE and $url = preg_replace('/&(?!#?\w+;)/', '&', $url); if ($matches[1]) # image { $element = ''.$matches[3].''; } else { $element_text =parse_span_elements($matches[3]); $element = ''.$element_text.''; } $code = "\x1A".'$'.$index; $text = str_replace($matches[0], $code, $text); $map[$code] = $element; $index ++; } } # reference link or image if (strpos($text, '[') !== FALSE and preg_match_all('/(!?)\[(.+?)\](?:\n?[ ]?\[(.*?)\])?/ms', $text, $matches, PREG_SET_ORDER)) { foreach ($matches as $matches) { $link_definition = isset($matches[3]) && $matches[3] ? $matches[3] : $matches[2]; # implicit $link_definition = strtolower($link_definition); if (isset($reference_map[$link_definition])) { $url = $reference_map[$link_definition]; strpos($url, '&') !== FALSE and $url = preg_replace('/&(?!#?\w+;)/', '&', $url); if ($matches[1]) # image { $element = ''.$matches[2].''; } else # anchor { $element_text = parse_span_elements($matches[2]); $element = ''.$element_text.''; } $code = "\x1A".'$'.$index; $text = str_replace($matches[0], $code, $text); $map[$code] = $element; $index ++; } } } # automatic link if (strpos($text, '<') !== FALSE and preg_match_all('/<((https?|ftp|dict):[^\^\s]+?)>/i', $text, $matches, PREG_SET_ORDER)) { foreach ($matches as $matches) { $url = $matches[1]; strpos($url, '&') !== FALSE and $url = preg_replace('/&(?!#?\w+;)/', '&', $url); $element = ':text'; $element = str_replace(':text', $url, $element); $element = str_replace(':href', $url, $element); $code = "\x1A".'$'.$index; $text = str_replace($matches[0], $code, $text); $map[$code] = $element; $index ++; } } strpos($text, '&') !== FALSE and $text = preg_replace('/&(?!#?\w+;)/', '&', $text); strpos($text, '<') !== FALSE and $text = preg_replace('/<(?!\/?\w.*?>)/', '<', $text); if (strpos($text, '_') !== FALSE) { $text = preg_replace('/__(?=\S)(.+?)(?<=\S)__(?!_)/s', '$1', $text); $text = preg_replace('/_(?=\S)(.+?)(?<=\S)_/s', '$1', $text); } if (strpos($text, '*') !== FALSE) { $text = preg_replace('/\*\*(?=\S)(.+?)(?<=\S)\*\*(?!\*)/s', '$1', $text); $text = preg_replace('/\*(?=\S)(.+?)(?<=\S)\*/s', '$1', $text); } $text = strtr($text, $map); return $text; } ?>