從給定的字符串中提取<iframe>標簽的src屬性值,可以使用正則表達式來進行匹配。以下是一個示例代碼:
csharp復(fù)制代碼using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string html="<iframe src=\"https://www.testx.cn/3D\" width=\"100%\" height=\"100%\" style=\"display: block;min-height: 990px;\"></iframe>";
// 創(chuàng)建正則表達式模式
string pattern="<iframe\\s+src=('|\")([^'\"]+)('|\")";
// 使用Regex.Match方法進行匹配
Match match=Regex.Match(html, pattern);
if (match.Success)
{
// 提取src屬性值
string iframeSrc=match.Groups[2].Value;
// 輸出src屬性值
Console.WriteLine(iframeSrc);
}
}
}
上述代碼中,我們使用了與之前相同的Regex.Match方法和正則表達式模式來匹配<iframe>標簽的src屬性。然后,我們從匹配結(jié)果中提取了src屬性值。
請注意,為了正確處理轉(zhuǎn)義字符,我們在正則表達式模式中使用了雙引號括起來的\"來表示雙引號。這樣可以確保我們能夠正確地匹配包含轉(zhuǎn)義字符的字符串。
使用正則表達式提取HTML標記的屬性時,請確保對輸入進行合理的驗證和錯誤處理,以避免潛在的異常情況或安全漏洞。
、iframe標簽
自己編寫的頁面中如果要引用外部的頁面的話,可以使用iframe標簽來實現(xiàn)。為了更好地理解舉個例子,前面幾篇中我們都是在index.hmtl中編寫代碼。如果有個需求是在我們的index.html中引入百度的頁面,就可以使用iframe標簽來實現(xiàn)。
iframe和img標簽一樣也有一個src屬性,這個屬性寫上百度的地址,就可以把百度的頁面引入到我們編寫的index.html頁面中來了。
在瀏覽器中的效果,你會發(fā)現(xiàn)并沒有顯示百度的頁面,那是因為我們的代碼是直接放在電腦桌面上的,要想顯示,我們需要把index.html頁面放到web服務(wù)器中才行,這個web服務(wù)器我們后面會講。這里先知道一下就行。為了測試效果我先將index.html頁面放到本地搭建的web服務(wù)器中讓大家看小效果:
上圖就是引入百度頁面的效果了。
當然不是說不知道web服務(wù)器就沒辦法測試iframe標簽,我們可以新創(chuàng)建一個頁面,引入我們新創(chuàng)建的頁面也是可以的。
1.創(chuàng)建detail.html頁面
detail.html頁面要和你的index.html頁面放在同一個文件夾下面。
2.在detail.html中寫一些代碼:
3.在index.html中引入detail.html頁面
瀏覽器中的效果:
為了看得更加明顯,我們在index.html中也加上一句話:
再看瀏覽器中的效果:
由上面的測試結(jié)果來看,得出iframe標簽的主要功能就是引入一個頁面,引入的頁面可以網(wǎng)絡(luò)上的,比如百度(https://www.baidu.com)、搜狐(https://www.sohu.com/)等等,也可以是你自己編寫的一個頁面。
二、embed視頻標簽
見名知意,視頻標簽就是用來播放視頻的,我們經(jīng)常看到的愛奇藝、騰訊視頻都可以用視頻標簽來實現(xiàn)。
embed標簽同樣使用src屬性來引入視頻文件,這個視頻文件可以使用網(wǎng)絡(luò)上的一個視頻地址,也可以是本地的一個視頻地址。但是要注意,如果要引入網(wǎng)絡(luò)上的視頻的話,需要把index.html頁面放到web服務(wù)器中。
這里我們使用本地的視頻文件來做演示:
1.找個視頻文件(可以從網(wǎng)上下載),放到和index.html文件同一個文件夾中:
我這里放了一個《葉問》的電影視頻。
2.在index.html文件用使用embed視頻標簽引入這個視頻:
我們來看看瀏覽器中的效果:
視頻可以正常播放。
html標簽是編程中必不可少的東西,不管你是看網(wǎng)頁或者手機app還是電腦上的游戲,都需要一個漂亮的界面。想要做一個漂亮的界面就必定會使用到html這種標記語言,html是學習編程的開始,它在編程學習中是最簡單的部分,所以沒理由不學好它。
最后補充幾個文檔標簽:
如果你經(jīng)常逛淘寶或者京東的話,你會發(fā)現(xiàn)他們都有一個共同的特點,就是都有一個頭部,都會有一個導航條,都會有一個尾部,如下圖:
淘寶首頁:
京東首頁:
頭部的內(nèi)容我們一般放在header標簽中、導航條一般放在nav標簽中、尾部一般放在footer標簽中。
代碼示例:
瀏覽器中的效果:
它們?nèi)齻€是純屬語義化的標簽,并沒有什么效果,但為什么要用它們呢?
當你的代碼有成千上萬上的時候,你可以很明顯地知道header標簽中的代碼屬于頭部的代碼,nav標簽中的代碼屬于導航條的代碼,footer標簽中的代碼屬于尾部的代碼,可以快速定位代碼的位置。這就是它們的作用。
天有人反饋了一個在iframe內(nèi)無法調(diào)用網(wǎng)站同一個站點的頁面問題并報錯,就在網(wǎng)站查了一些相關(guān)的資料,整理一下關(guān)于禁止網(wǎng)站所有頁面或某一個頁面被iframe內(nèi)框架調(diào)用的方法。
網(wǎng)站iframe內(nèi)框架調(diào)用頁面報錯如下
Refused to display http://xxxxxx.com in a frame because it set 'X-Frame-Options' to 'deny'.
通過查到的資料可得知,此錯誤與iframe框架被調(diào)用頁面的 HTTP 標頭中 X-Frame-Options 設(shè)置有關(guān),所以整理了如下資料
X-Frame-Options是一個HTTP響應(yīng)頭,用來告訴瀏覽器此頁面是否可以在其它網(wǎng)頁中的frame或iframe標簽中被渲染,網(wǎng)站可以利用此響應(yīng)頭來避免被其它網(wǎng)站所劫持。
X-Frame-Options有三個參數(shù)值,分別如下
DENY:表示不能被嵌入到任何iframe或frame中。
SAMEORIGIN:表示頁面只能被本站頁面嵌入到iframe或者frame中。
url,指定是一個域名,表示此網(wǎng)頁只能被指定域名下的頁面中的框架所調(diào)用
html代碼
以下代碼,添加到HTML頁面中的head標簽內(nèi)即可
代碼1:html頁面禁止被框架調(diào)用
<meta http-equiv="X-Frame-Options" content="deny">
代碼2:只允許頁面被本站調(diào)用
<meta http-equiv="X-Frame-Options" content="SAMEORIGIN">
代碼3:只允許頁面被指定URL嵌套調(diào)用
<meta http-equiv="X-Frame-Options" content="http://www.feiniaomy.com">
PHP代碼
<?php //示例1 header('X-Frame-Options: deny'); //示例2 header('X-Frame-Options: SAMEORIGIN'); //示例3 header('X-Frame-Options: http://www.feiniaomy.com'); ?>
攻擊者可以使用一個透明的、不可見的iframe標簽,加載目標頁面,然后通過調(diào)整iframe頁面的位置,誘導用戶進行點擊操作頁面的功能區(qū),并劫持用戶的數(shù)據(jù),達到劫持頁面的目的。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。