将超链接和类添加到字符串中的每个图像

Posted

技术标签:

【中文标题】将超链接和类添加到字符串中的每个图像【英文标题】:Add Hyperlink and Class to every image within a string 【发布时间】:2020-05-26 06:54:38 【问题描述】:

我使用 Summernote 发布博客,但使用代码 sn-p 将图像直接上传到服务器而不是文本本身,代码如下所示:

<script>$(document).ready(function() 
$("#summernote").summernote(
         callbacks: 
        onImageUpload : function(files, editor, welEditable) 

             for(var i = files.length - 1; i >= 0; i--) 
                     sendFile(files[i], this);
            
        
    
    );
);
function sendFile(file, el) 
var form_data = new FormData();
form_data.append('file', file);
$.ajax(
    data: form_data,
    type: "POST",
    url: 'editor-upload.php',
    cache: false,
    contentType: false,
    processData: false,
    success: function(url) 
        $(el).summernote('editor.insertImage', url);
    
);

</script>

<?php
if(empty($_FILES['file']))

    exit();

$errorImgFile = "./img/img_upload_error.jpg";
$temp = explode(".", $_FILES["file"]["name"]);
$newfilename = round(microtime(true)) . '.' . end($temp);
$destinationFilePath = './img-uploads/'.$newfilename ;
if(!move_uploaded_file($_FILES['file']['tmp_name'], $destinationFilePath))
    echo $errorImgFile;

else
    echo $destinationFilePath;


?>

我现在正在尝试将 Lightbox 包含到嵌入式图像中,但无法找到一种方法来单独更改 img 标签来执行此操作?举个例子;

$string = '<img src="firstimg.jpg"> a little bit of text <img src="secondimg.jpg">';

我需要将其转换为类似于

<a class="example-image-link" href="firstimg.jpg" data-lightbox="example-set"><img class="example-image" src="firstimg.jpg"></a> a little bit of text <a class="example-image-link" href="secondimg.jpg" data-lightbox="example-set"><img class="example-image" src="secondimg.jpg"></a>

我四处寻找,但没有找到任何帮助?任何帮助,将不胜感激!

【问题讨论】:

【参考方案1】:

let $string = `<img src="firstimg.jpg"> a little bit of text <img src="secondimg.jpg" >`
let parser = new DOMParser()
let _document = parser.parseFromString($string, "text/html")
let ele = _document.getElementsByTagName("IMG")
for(let i = 0; i < ele.length; i++) 
let wrapper = _document.createElement('a'); 
wrapper.classList = ["example-image-link"]
wrapper.href = ele[i].src
wrapper.setAttribute('data-lightbox', 'Hello World!');
let myImg =  ele[i]
wrapper.appendChild(myImg.cloneNode(true)); 
myImg.parentNode.replaceChild(wrapper, myImg);


let newStr = `$_document.getElementsByTagName("BODY")[0].innerHTML`
console.log(newStr)

你可以试试上面的逻辑

【讨论】:

虽然这似乎可行,但我不熟悉这种类型的代码,似乎无法让它在我的网站中运行?你能把它添加到像 w3schools 这样的地方,这样我就可以看到它是如何添加的? w3schools.com/code/tryit.asp?filename=GBYUNFNNXY25 你可以看看这个sn-p out jsFiddle

以上是关于将超链接和类添加到字符串中的每个图像的主要内容,如果未能解决你的问题,请参考以下文章

将超链接添加到 DataTables 中的列

是否可以将超链接添加到 Excel 中的图标或图片?

将超链接应用于图像

如何将超链接添加到表格行 <tr>

使用以编程方式添加的验证器将超链接添加到 ValidationSummary

使用VBA - Excel将超链接添加到表中的单元格