<?php namespace App\Helpers; use Parsedown; /** * Helper to extend Parsedown * * @author Björn Hase, Tentakelfabrik * @license http://opensource.org/licenses/MIT The MIT License * @link https://gitea.tentakelfabrik.de/Tentakelfabrik/super-gear-directus * */ class MarkdownHelper extends Parsedown { /** * * @var string */ const EXTERNAL_LINK = "/^(http|https):\/\//"; const INNER_BRACKETS = "/\){(.*?)\}/"; const TARGET_BLANK = "_blank"; const DIVIDER_METHOD = ':'; const DIVIDER_SIZES = 'x'; /** * extend default function, if a link has http|https in url, * then handle this link as external and set target to _blank * * @param array $excerpt * @return array */ protected function inlineLink($excerpt) { $result = parent::inlineLink($excerpt); if (is_array($result)) { if (isset($result['element']['attributes'])) { if (preg_match(self::EXTERNAL_LINK, $result['element']['attributes']['href'])) { $result['element']['attributes']['target'] = self::TARGET_BLANK; } } return $result; } } }