C#从iframe html标签获取src?

时间:2013-02-19 03:31:54

标签: c# regex iframe

基本上我有一个用户创建的字符串,它可能有也可能没有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然后我可以处理其余的事情。

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

3 个答案:

答案 0 :(得分: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");

希望这有帮助。

答案 1 :(得分:1)

这是一个让你入门的正则表达式:

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

注意:可能是一些未考虑的边缘情况。我将此作为OP的练习:)

答案 2 :(得分:0)

您可以使用以下代码;

var source = Regex.Match(iframeStr, "<iframe.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value;