У меня есть текст, который может содержать несколько iframes
, и я собираюсь взять sr c из этого iframe и заменить весь iframe только текстом в этом sr c.
Например, если у меня есть это:
Some text here. After that, an iframe: <iframe src="//www.youtube.com/embed/GplWFSU3tLA"></iframe>
Я хочу получить это:
Some text here. After that, an iframe: //www.youtube.com/embed/GplWFSU3tLA
Вот что я пытался сделать: я написал регулярное выражение для iframe и регулярное выражение для ссылки на YouTube. Затем я беру текст, который хочу проанализировать, использую .replace
, чтобы заменить все iframe, и внутри функции, которую я передаю x
, которая соответствует iframe, и запускаю регулярное выражение youtube, чтобы найти только ссылку на youtube, после чего я верните ссылку (которая теоретически должна заменить соответствующий iframe).
Я подозреваю, что я либо написал один или оба из RegExp
плохо, либо я неправильно использую .replace
. Спасибо за любые идеи!
$(document).ready(function(){
var iframeHunter = new RegExp(/<iframe(.+)<\/iframe>/g);
var youtubeLinkHunter = new RegExp(/(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+/mgi);
var message_text = $("#textHolder").text();
message_text = message_text.replace(iframeHunter, function myFunction(x){
var youtubeLink = x.match(youtubeLinkHunter);
return youtubeLink;
});
$("#replacedOutput").text(message_text);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Text being parsed:
<p id="textHolder">Some text here. After that, an iframe: <iframe width="420" height="315" src="//www.youtube.com/embed/GplWFSU3tLA" frameborder="0" allowfullscreen></iframe></p>
Output:
<p id="replacedOutput"></p>
Я также воссоздал его в jsfiddle, с тем же кодом, что и выше: https://jsfiddle.net/e5vgscq0/
Изменить для уточнения: Мне не нужно заменять элемент iframe DOM ссылкой на YouTube, мне нужна новая строка, в которой все iframe были заменены на srcs youtube.