2016-06-08 71 views
2

我有一個字符串包含一些html標籤中的內容,也有一些文本。如何使用javascript或angularjs從字符串中提取html標記的內容?

它看起來像這樣:

var str = "<p></p><p><i>blabla</i></p><p><i><b>blaaaaaablaaaaa</b></i></p><iframe src="..." height="111" width="333"></iframe><p></p><p><sub>hello blabla</sub></p><p><br></p><iframe src="..." height="444" width="888"></iframe>" 

我想在Javascript或AngularJS不知何故只提取了一些標籤(包括內容屬性),然後把它們放進一個數組。

例如,如果我只想要標籤,我應該有這樣的:

var array = ["<iframe src='...' height='111' width='333'></iframe>", "<iframe src='...' height='444' width='888'></iframe>"]; 

如果我想<p>標籤則:

var array = ["", "<i>blabla</i>","<i><b>blaaaaaablaaaaa</b></i>","","<sub>hello blabla</sub>","<br>"]; 

什麼建議嗎?謝謝 !

NOTE:請不要回答請使用jquery拜託!

+0

我相信這將屬於HTML解析。所以我會爲此搜索。這是屁股疼痛。否則,看看是否有人在Regex中有很好的實現。 –

+0

http://stackoverflow.com/questions/9189338/how-to-extract-content-of-html-tags-from-a-string-using-javascript-or-jquery檢查了這一點..這裏是你的答案。 –

+0

提取意味着也從字符串中刪除?你需要一串iframe嗎?或者他們可以成爲dom元素嗎?你對結果做什麼? – charlietfl

回答

2

您可以創建一個角度元素並從中獲取文本。

例子:

$scope.array =[]; 
$scope.eles= 
angular.element(str).find('iframe'); 
[].forEach.call($scope.eles, function (ctl) { 
    $scope.name.push(angular.element(ctl).text()) 
}); 

這裏是一個演示:http://jsfiddle.net/Lvc0u55v/5122/


編輯 要獲取標籤的所有HTML,你可以這樣做:

angular.element(str).find('iframe'); 
    [].forEach.call($scope.eles, function (ctl) { 
     $scope.name.push(ctl.outerHTML) 
    }); 

演示:http://jsfiddle.net/Lvc0u55v/5123/

+0

在正確的軌道上,但文本()不會提供iframe元素的outerHTML – charlietfl

+0

這是回答我的問題** 50%**我還需要具有他的屬性的HTML標記:'[「