我在我的函数中添加了一些代码,以便在链接是图像的直接链接时允许我显示图像。现在唯一的问题是同一帖子下面的所有其他链接都显示了损坏的图像,因为URL只是指向网站的链接而不是实际图像。我不确定是否需要在图像周围做一个if语句,以确定链接是图像链接还是URL链接。
我想也许可以做一个单独的功能,所以首先使用解析将图像链接指向另一个函数来输出图像。但后来我不知道这是否有用。
$cont = preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array( $this, 'autoembedimage_callback' ), $cont);
PHP
/**
* Passes on any unlinked URLs that are on their own line for potential embedding.
* @param string $contThe content to be searched.
* @return string Potentially modified $content.
*/
function parse( $cont) {
$cont = preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array( $this, 'autoembed_callback' ), $cont);
return $cont;
}
/**
* Callback function for {@link AutoEmbed::parse()}.
* @param array $match A regex match array.
* @return string The embed HTML on success, otherwise the original URL.
*/
function autoembed_callback($match) {
$attr['discover'] = true;
$return = $this->get_html( $match[1], $attr );
$match[0] = preg_replace("/\[\/?(.*?)\]/", "", $match[0]);
$match[0] = preg_replace("/\<\/?(.*?)\>/", "", $match[0]);
$image_file = ''.$match[1].'';
$embedded = '<img id="feed" src="'.$image_file.'" onerror="this.style.display=\'none\';" />';
$m = trim(strtolower($match[0]));
$m = str_replace("http://", "", $m);
$m = str_replace("https://", "", $m);
$m = str_replace("ftp://", "", $m);
$m = str_replace("www.", "", $m);
if (strlen($m) > 25) {
$m = substr($m, 0, 25) . "...";
}
if($attr['discover'] = true) {
$return = $this->get_html( $match[1], $attr );
}
return "<a href=\"$match[0]\" target=\"_blank\">$m</a>\n$return\n\n$embedded\n";
}