private function processHandler(ParsedShortcodeInterface $parsed, ProcessorContext $context, $handler) { $processed = ProcessedShortcode::createFromContext(clone $context); $processed = $this->processRecursion($processed, $context); return $handler ? call_user_func_array($handler, array($processed)) : substr_replace($parsed->getText(), $processed->getContent(), strrpos($parsed->getText(), $parsed->getContent()), mb_strlen($parsed->getContent())); }
private function processHandler(ParsedShortcodeInterface $parsed, ProcessorContext $context, $handler) { $processed = ProcessedShortcode::createFromContext(clone $context); $content = $this->processRecursion($processed, $context); $processed = $processed->withContent($content); if ($handler) { return call_user_func_array($handler, array($processed)); } $state = $parsed->getText(); $length = mb_strlen($processed->getTextContent(), 'utf-8'); $offset = mb_strrpos($state, $processed->getTextContent(), 'utf-8'); return mb_substr($state, 0, $offset, 'utf-8') . $processed->getContent() . mb_substr($state, $offset + $length, mb_strlen($state, 'utf-8'), 'utf-8'); }