parsedown设置图片宽高

Parsedown set image width and height

目前我使用 CodeIgniter 3.1.3 和 Parsedown / Markdown Guide

通过解析,我希望能够设置图像的宽度和高度

![enter image description][1]

[1]: http://www.example.com/image.png '100x200' <-- widthxheight

我尝试了上面的方法,但是设置了图片标题。

输出将是

<img src="http://www.example.com/image.png" width="100" height="200" alt="enter image description">

Question in parsedown library is there any way to modify it so can get and set the width and height of image?

protected function inlineImage($Excerpt)
{
    if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[')
    {
        return;
    }

    $Excerpt['text']= substr($Excerpt['text'], 1);

    $Link = $this->inlineLink($Excerpt);

    if ($Link === null)
    {
        return;
    }

    $Inline = array(
        'extent' => $Link['extent'] + 1,
        'element' => array(
            'name' => 'img',
            'attributes' => array(
                'src' => $Link['element']['attributes']['href'],
                'alt' => $Link['element']['text'],
                'width' => '',
                'height' => ''
            ),
        ),
    );

    $Inline['element']['attributes'] += $Link['element']['attributes'];

    unset($Inline['element']['attributes']['href']);

    return $Inline;
}

此(参考)语法的最后一个元素 [1]: http://www.example.com/image.png '100x200'

将作为 title 属性传递,因此您可以这样做:

class MyParsedown extends Parsedown
{
    protected function inlineImage($Excerpt)
    {
        $Inline = parent::inlineImage($Excerpt);

        if (!isset($Inline['element']['attributes']['title'])) { return $Inline; }

        $size = $Inline['element']['attributes']['title'];

        if (preg_match('/^\d+x\d+$/', $size)) {
            list($width, $height) = explode('x', $size);

            $Inline['element']['attributes']['width'] = $width;
            $Inline['element']['attributes']['height'] = $height;

            unset ($Inline['element']['attributes']['title']);
        }

        return $Inline;
    }
}

如果 title 匹配 NUMERICxNUMERIC 模式,属性将更改为 width+height。您可能会限制位数或大小以防止破坏页面,还应排除前导 0(或只有 0 的大小)。

略有不同,可以通过将宽度或高度设置为零来保持原始纵横比

class MyParsedown extends Parsedown
{
    protected function inlineImage($Excerpt)
    {
        $Inline = parent::inlineImage($Excerpt);

        if (!isset($Inline['element']['attributes']['title'])) { return $Inline; }

        $size = $Inline['element']['attributes']['title'];

        if (preg_match('/^\d+x\d+$/', $size)) {
            list($width, $height) = explode('x', $size);

            if($width > 0) $Inline['element']['attributes']['width'] = $width;
            if($height > 0) $Inline['element']['attributes']['height'] = $height;

            unset ($Inline['element']['attributes']['title']);
        }

        return $Inline;
    }
}