diff -up Michelf/MarkdownExtra.php.php74 Michelf/MarkdownExtra.php --- Michelf/MarkdownExtra.php.php74 2019-07-26 15:03:52.000000000 +0200 +++ Michelf/MarkdownExtra.php 2019-07-26 15:07:25.255088870 +0200 @@ -212,9 +212,9 @@ class MarkdownExtra extends \Michelf\Mar $attributes = array(); $id = false; foreach ($elements as $element) { - if ($element{0} == '.') { + if ($element[0] == '.') { $classes[] = substr($element, 1); - } else if ($element{0} == '#') { + } else if ($element[0] == '#') { if ($id === false) $id = substr($element, 1); } else if (strpos($element, '=') > 0) { $parts = explode('=', $element, 2); @@ -508,14 +508,14 @@ class MarkdownExtra extends \Michelf\Mar } } // Check for: Indented code block. - else if ($tag{0} == "\n" || $tag{0} == " ") { + else if ($tag[0] == "\n" || $tag[0] == " ") { // Indented code block: pass it unchanged, will be handled // later. $parsed .= $tag; } // Check for: Code span marker // Note: need to check this after backtick fenced code blocks - else if ($tag{0} == "`") { + else if ($tag[0] == "`") { // Find corresponding end marker. $tag_re = preg_quote($tag); if (preg_match('{^(?>.+?|\n(?!\n))*?(?clean_tags_re . ')\b}', $tag) || - $tag{1} == '!' || $tag{1} == '?') + $tag[1] == '!' || $tag[1] == '?') { // Need to parse tag and following text using the HTML parser. // (don't check for markdown attribute) @@ -564,7 +564,7 @@ class MarkdownExtra extends \Michelf\Mar preg_match('{^) // Comments and Processing Instructions. if (preg_match('{^auto_close_tags_re . ')\b}', $tag) || - $tag{1} == '!' || $tag{1} == '?') + $tag[1] == '!' || $tag[1] == '?') { // Just add the tag to the block as if it was text. $block_text .= $tag; @@ -683,7 +683,7 @@ class MarkdownExtra extends \Michelf\Mar // Increase/decrease nested tag count. Only do so if // the tag's name match base tag's. if (preg_match('{^header_id_func) ? call_user_func($this->header_id_func, $matches[1]) : null; @@ -1466,7 +1466,7 @@ class MarkdownExtra extends \Michelf\Mar $classes = array(); if ($classname != "") { - if ($classname{0} == '.') + if ($classname[0] == '.') $classname = substr($classname, 1); $classes[] = $this->code_class_prefix . $classname; } diff -up Michelf/Markdown.php.php74 Michelf/Markdown.php --- Michelf/Markdown.php.php74 2019-07-26 15:03:52.000000000 +0200 +++ Michelf/Markdown.php 2019-07-26 15:06:27.924736197 +0200 @@ -952,7 +952,7 @@ class Markdown implements MarkdownInterf return $matches[0]; } - $level = $matches[2]{0} == '=' ? 1 : 2; + $level = $matches[2][0] == '=' ? 1 : 2; // ID attribute generation $idAtt = $this->_generateIdFromHeaderValue($matches[1]); @@ -1358,7 +1358,7 @@ class Markdown implements MarkdownInterf } else { // Other closing marker: close one em or strong and // change current token state to match the other - $token_stack[0] = str_repeat($token{0}, 3-$token_len); + $token_stack[0] = str_repeat($token[0], 3-$token_len); $tag = $token_len == 2 ? "strong" : "em"; $span = $text_stack[0]; $span = $this->runSpanGamut($span); @@ -1383,7 +1383,7 @@ class Markdown implements MarkdownInterf } else { // Reached opening three-char emphasis marker. Push on token // stack; will be handled by the special condition above. - $em = $token{0}; + $em = $token[0]; $strong = "$em$em"; array_unshift($token_stack, $token); array_unshift($text_stack, ''); @@ -1796,9 +1796,9 @@ class Markdown implements MarkdownInterf * @return string */ protected function handleSpanToken($token, &$str) { - switch ($token{0}) { + switch ($token[0]) { case "\\": - return $this->hashPart("&#". ord($token{1}). ";"); + return $this->hashPart("&#". ord($token[1]). ";"); case "`": // Search for end marker in remaining text. if (preg_match('/^(.*?[^`])'.preg_quote($token).'(?!`)(.*)$/sm',