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;
}
}
目前我使用 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;
}
}