31 lines
1.1 KiB
PHP
31 lines
1.1 KiB
PHP
<?php
|
|
namespace Misuzu\Parsers\BBCode\Tags;
|
|
|
|
use Misuzu\Parsers\BBCode\BBCodeTag;
|
|
|
|
final class ImageTag extends BBCodeTag {
|
|
public function parseText(string $text): string {
|
|
return preg_replace_callback("/\[(img|imgmap)\]((?:https?:)?\/\/.+?)\[\/(img|imgmap)\]/", function($matches) {
|
|
if($matches[1] !== $matches[3])
|
|
return $matches[0];
|
|
|
|
$url = parse_url($matches[2]);
|
|
|
|
if(!empty($url['scheme']) && !in_array(mb_strtolower($url['scheme']), ['http', 'https'], true))
|
|
return $matches[0];
|
|
|
|
// return sprintf(
|
|
// '<span class="js-msz-embed-media" data-msz-embed-url="%1$s"></span>'
|
|
// . '<noscript><img src="%1$s" alt="%1$s" style="max-width:100%%;max-height:900px;"></noscript>',
|
|
// $matches[1]
|
|
// );
|
|
|
|
return sprintf(
|
|
'<img src="%1$s" alt="%1$s" style="max-width:100%%;max-height:900px;"%2$s>',
|
|
$matches[2],
|
|
$matches[1] === 'imgmap' ? ' ismap' : '',
|
|
);
|
|
}, $text);
|
|
}
|
|
}
|