public function doFencedCodeBlocks($text) { $text = preg_replace_callback('{ (?:\\n|\\A) # 1: Opening marker ( `{3,} # Marker: three tilde or more. ) [ ]* \\n # Whitespace and newline following marker. # 2: Content ( (?> (?!\\1 [ ]* \\n) # Not a closing marker. .*\\n+ )+ ) # Closing marker. \\1 [ ]* \\n }xm', array(&$this, '_doFencedCodeBlocks_callback'), $text); return parent::doFencedCodeBlocks($text); }