如何从react native中的html代码获取youtube url

k10s72fa  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(312)

我正在使用api来响应本机项目。
我在尝试从html获取youtube url时遇到问题。
html代码

<p><em><u style="text-decoration:underline"><strong>Đặt mua 12 lượt rửa trọn gói&nbsp;tính tiền 10 lượt.</strong></u></em></p><p>TMCARe với đội ngũ nhân viên thật thà và cẩn thận sẽ mang lại sự hài lòng cho khách hàng. TMCARe áp dụng quy trình rửa xe với tiêu chí: Cẩn thận, tỉ mỉ và sạch sẽ. Sử dụng khăn sạch, mỗi xe một bộ khăn, nước rửa xe Đức an toàn và bóng bẩy!</p><p>####</p><p>Thông tin chi tiết về dịch vụ</p><p><iframe src="//www.youtube.com/embed/dglnN8Mx0k4" allowfullscreen="allowfullscreen" width="560" height="314" frameborder="0"></iframe></p>

我的问题:
如何从上述代码中获取“www.youtube.com/embed/dglnn8mx0k4”。
非常感谢

cunj1qz1

cunj1qz11#

谢谢@horcrux。看完你的答案后,我试图找到解决办法。

const youtube_parser_from_body = (item) => {
            let list_youtube_id = [];
            try {
                let body_html = item.body_html;
                if (body_html !== null) {
                    let body_list = body_html.split('<iframe ');
                    for (const item of body_list) {
                        if (item.includes("src=\"//www.youtube.com/")) {
                            let iframe_html_list = item.split("</iframe>");
                            let first_element = iframe_html_list[0];
                            first_element = first_element.replace("src=\"//", "");
                            let first_element_list = first_element.split('\"');
                            let first_link = first_element_list[0]
                            var regExp = /^.*((www.youtube.com\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
                            var match = first_link.match(regExp);
                            let youtube_id = (match && match[7].length == 11) ? match[7] : false;
                            list_youtube_id.push(youtube_id);
                        }
                    }

                }
            } catch (e) {

            }

            return list_youtube_id;
        }

谢谢@ketan malhotra,您的解决方案只有在body_html中只有一个链接时才有效,如果有更多链接,它将产生类似Picture的结果:

w80xi6nr

w80xi6nr2#

要想成为一名程序员,有必要在询问他人之前自己尝试一种解决方案。如果你尝试过一种解决方案,告诉我们你尝试了什么,这样我们可以更好地帮助你,告诉我们你做错了什么。
尽管如此,我看到您已经尝试使用正则表达式。显然,您还没有深入了解正则表达式是如何工作的。为了帮助您,请继续使用以下工具https://regex101.com/
我能够在regex101上过滤出您的视频链接,如下所示:https://regex101.com/r/aespdu/1
听起来这很有效。它当前返回在给定字符串中找到的所有youtube URL的数组:

function youtube_parser(url){
  var regExp = /(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*?[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/gi;
  var matches = url.match(regExp);
  return matches ? matches : false;
}

var htmlCode = '<p><em><u style="text-decoration:underline"><strong>Đặt mua 12 lượt rửa trọn gói&nbsp;tính tiền 10 lượt.</strong></u></em></p><p>TMCARe với đội ngũ nhân viên thật thà và cẩn thận sẽ mang lại sự hài lòng cho khách hàng. TMCARe áp dụng quy trình rửa xe với tiêu chí: Cẩn thận, tỉ mỉ và sạch sẽ. Sử dụng khăn sạch, mỗi xe một bộ khăn, nước rửa xe Đức an toàn và bóng bẩy!</p><p>####</p><p>Thông tin chi tiết về dịch vụ</p><p><iframe src="//www.youtube.com/embed/dglnN8Mx0k4" allowfullscreen="allowfullscreen" width="560" height="314" frameborder="0"></iframe></p>';

console.log(youtube_parser(htmlCode));

相关问题