0

基本上我有一个用户创建的字符串,它可能有也可能没有 youtube 的 iframe 链接。由于这是一个客户端应用程序,它不使用 html 标签,而且我有一个特殊的表单来显示 youtube 视频之类的内容。但是,我需要从标签中获取 src 并将其周围的所有数据替换为空。它也可能有多个链接,所以这需要像正则表达式一样在全球范围内进行。

示例:用户字符串:

<iframe width='300px' height='225px' src='http://www.youtube-nocookie.com/embed/4FhG-UYRHJ0' frameborder='0' allowfullscreen></iframe>

我想输出什么:我希望用户只看到:http://www.youtube-nocookie.com/embed/4FhG-UYRHJ0然后我可以处理其余的。

非常感谢任何帮助,因为我什至不知道如何开始。谢谢你们。

4

3 回答 3

4

你也可以用这个

string iframe = "<iframe width='300px' height='225px' src='http://www.youtube-nocookie.com/embed/4FhG-UYRHJ0' frameborder='0' allowfullscreen></iframe>";

            Match matchdec = Regex.Match(iframe, @"\ssrc='\b(\S*)\b", RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase);
            if (matchdec.Success) 
            {
                if (matchdec.Groups.Count > 1)
                {
                    string retval = matchdec.Groups[1].Value;
                }
            }

对于您可以使用的所有比赛:-

string iframe = "<iframe width='300px' height='225px' src='http://www.youtube-nocookie.com/embed/4FhG-UYRHJ0' frameborder='0' allowfullscreen></iframe>";
                iframe += "<iframe width='300px' height='225px' src='http://www.youtube-nocookie.com/embed/newid' frameborder='0' allowfullscreen></iframe>";

                Match matchdec = Regex.Match(iframe, @"\ssrc='\b(\S*)\b", RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase);
                while (matchdec.Success)
                {
                    if (matchdec.Groups.Count > 1)
                    {
                        string retval = matchdec.Groups[1].Value;
                    }
                    matchdec = matchdec.NextMatch();
                }

要替换添加此行

iframe = Regex.Replace(iframe, retval, "yournewurl");

希望这可以帮助。

于 2013-02-19T04:31:41.110 回答
1

这是一个正则表达式,可以帮助您入门:

(?<=src=')[^']+

注意:可能是一些没有考虑到的边缘情况。我会把它作为 OP 的练习 :)

于 2013-02-19T03:56:02.500 回答
0

您可以使用以下代码;

var source = Regex.Match(iframeStr, "<iframe.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value;
于 2018-08-06T22:06:59.567 回答