当前位置:Gxlcms > PHP教程 > 请教一下链接转换不是写在IMG标签内吗?

请教一下链接转换不是写在IMG标签内吗?

时间:2021-07-01 10:21:17 帮助过:8人阅读

public function format($image_url, $res, $content) {
        $no_match = false;
        $attachment_id = $res['id'];
        $url_path = str_replace(basename($res['file']), '', $res['url']);
        $size = isset($res['sizes'][$this->format['size']]) ? $this->format['size'] : 'full';
        if ($size == 'full') {
            $src = $res['url'];
            $width = $res['width'];
            $height = $res['height'];
        } else {
            $src = $url_path . $res['sizes'][$size]['file'];
            $width = $res['sizes'][$size]['width'];
            $height = $res['sizes'][$size]['height'];
        }
        $pattern_image_url = $this->encode_pattern($image_url);
        $preg = false;
        if ($this->keep_outside_links=='no') {
            $pattern = '/]*'.$pattern_image_url.'.*?>?<[^>]+a>/i';
            $preg = preg_match($pattern, $content, $matches);
            if ($preg) {
                if ( $this->save_outside_links == 'yes' ) {
                    if ( preg_match('/]*href=\"(.*?)\".*?>/i', $matches[0], $match) ) {
                        $link = $match[1];
                        $description = ''.__('Original Link', 'qqworld_auto_save_images').'';
                        $description = apply_filters('qqworld-auto-save-images-save-outsite-link', $description, $link);
                        $args = array(
                            'ID' => $attachment_id,
                            'post_content' => $description
                        );
                        wp_update_post($args);
                    }
                }
                $args = $this->set_img_metadata($matches[0], $attachment_id);
            }
        }
        if (!$preg) {
            $pattern = '/]*'.$pattern_image_url.'.*?>/i';
            if ( preg_match($pattern, $content, $matches) ) {
                $args = $this->set_img_metadata($matches[0], $attachment_id);
            } else {
                $pattern = '/'.$pattern_image_url.'/i';
                $no_match = true;
            }
        }
        $alt = isset($args['alt']) ? ' alt="'.$args['alt'].'"' : '';
        $title = isset($args['title']) ? ' title="'.$args['title'].'"' : '';
        $align = $this->auto_caption == 'yes' ? '' : 'align'.$this->format_align_to.' ';
        $img = '';
        $link_to = $this->keep_outside_links=='no' ? $this->format['link-to'] : 'none';
        switch ($link_to) {
            case 'none':
                $replace = $img; break;
            case 'file':
                $replace = ''.$img.'';
                break;
            case 'post':
                $replace = ''.$img.'';
                break;
        }
        if ($no_match) $replace = $res['url'];
        else if ($this->auto_caption == 'yes') $replace = '[caption id="attachment_'.$attachment_id.'" align="align'.$this->format_align_to.'" width="'.$width.'"]' . $replace . ' ' . (isset($args['alt']) ? $args['alt'] : '') . '[/caption]';
        $replace .= str_replace( '[Attachment ID]', $res['id'], $this->additional_content['after'] );

        if ( $this->keep_outside_links=='yes' ) {
            $patt = '/]*'.$pattern_image_url.'.*?>?<[^>]+a>/i';
            if ( preg_match($patt, $content, $match) ) {
                $string = $match[0];
                $pos = strpos($string, '>');
                $string = substr_replace($string, ' rel="nofollow">', $pos, 1);
                $content = preg_replace($patt, $string, $content);
            }
        }

        $content = preg_replace($pattern, $replace, $content);
        return $content;
    }

以上是一个插件的代码,里面写了链接转换。
我想阻止它将原本的图片链接转换。请问应该怎么修改。不是很懂PHP。请教下各位前辈 谢谢

回复内容:

public function format($image_url, $res, $content) {
        $no_match = false;
        $attachment_id = $res['id'];
        $url_path = str_replace(basename($res['file']), '', $res['url']);
        $size = isset($res['sizes'][$this->format['size']]) ? $this->format['size'] : 'full';
        if ($size == 'full') {
            $src = $res['url'];
            $width = $res['width'];
            $height = $res['height'];
        } else {
            $src = $url_path . $res['sizes'][$size]['file'];
            $width = $res['sizes'][$size]['width'];
            $height = $res['sizes'][$size]['height'];
        }
        $pattern_image_url = $this->encode_pattern($image_url);
        $preg = false;
        if ($this->keep_outside_links=='no') {
            $pattern = '/]*'.$pattern_image_url.'.*?>?<[^>]+a>/i';
            $preg = preg_match($pattern, $content, $matches);
            if ($preg) {
                if ( $this->save_outside_links == 'yes' ) {
                    if ( preg_match('/]*href=\"(.*?)\".*?>/i', $matches[0], $match) ) {
                        $link = $match[1];
                        $description = ''.__('Original Link', 'qqworld_auto_save_images').'';
                        $description = apply_filters('qqworld-auto-save-images-save-outsite-link', $description, $link);
                        $args = array(
                            'ID' => $attachment_id,
                            'post_content' => $description
                        );
                        wp_update_post($args);
                    }
                }
                $args = $this->set_img_metadata($matches[0], $attachment_id);
            }
        }
        if (!$preg) {
            $pattern = '/]*'.$pattern_image_url.'.*?>/i';
            if ( preg_match($pattern, $content, $matches) ) {
                $args = $this->set_img_metadata($matches[0], $attachment_id);
            } else {
                $pattern = '/'.$pattern_image_url.'/i';
                $no_match = true;
            }
        }
        $alt = isset($args['alt']) ? ' alt="'.$args['alt'].'"' : '';
        $title = isset($args['title']) ? ' title="'.$args['title'].'"' : '';
        $align = $this->auto_caption == 'yes' ? '' : 'align'.$this->format_align_to.' ';
        $img = '';
        $link_to = $this->keep_outside_links=='no' ? $this->format['link-to'] : 'none';
        switch ($link_to) {
            case 'none':
                $replace = $img; break;
            case 'file':
                $replace = ''.$img.'';
                break;
            case 'post':
                $replace = ''.$img.'';
                break;
        }
        if ($no_match) $replace = $res['url'];
        else if ($this->auto_caption == 'yes') $replace = '[caption id="attachment_'.$attachment_id.'" align="align'.$this->format_align_to.'" width="'.$width.'"]' . $replace . ' ' . (isset($args['alt']) ? $args['alt'] : '') . '[/caption]';
        $replace .= str_replace( '[Attachment ID]', $res['id'], $this->additional_content['after'] );

        if ( $this->keep_outside_links=='yes' ) {
            $patt = '/]*'.$pattern_image_url.'.*?>?<[^>]+a>/i';
            if ( preg_match($patt, $content, $match) ) {
                $string = $match[0];
                $pos = strpos($string, '>');
                $string = substr_replace($string, ' rel="nofollow">', $pos, 1);
                $content = preg_replace($patt, $string, $content);
            }
        }

        $content = preg_replace($pattern, $replace, $content);
        return $content;
    }

以上是一个插件的代码,里面写了链接转换。
我想阻止它将原本的图片链接转换。请问应该怎么修改。不是很懂PHP。请教下各位前辈 谢谢

人气教程排行