简体   繁体   中英

How to extract content of html tags from a string using javascript or angularjs?

I have a string containing content in some html tags and also some text alone.

It looks like this :

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>"

I would like to extract somehow in Javascript or AngularJS only some tag (including content and attributes ) then put them into an array.

For example, if I want only <iframe> tag, I should have this :

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

If I want <p> tag then :

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

Any suggestion ? Thanks !

NOTE : Don't give an answer using Jquery please !

You could create an angular element and get the text out of it.

Example:

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

here is a demo: http://jsfiddle.net/Lvc0u55v/5122/


Edit To get all the html of the tag you can do:

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

demo: http://jsfiddle.net/Lvc0u55v/5123/

try this code:

var iFrameArr= str.match("<iframe>(.*)<iframe>");
var iFrameContent = iFrameArr[1];

You will want to look at splitting up the string with regex using a filter such as '(<iframe>).*(<\\/iframe>)' . This will find the tags of and as well as everything in between, putting it into a capture group per iteration found.

Set the html content to the DOM and extract the iframe tag using jquery

Assuming you have a div with id='test' in your DOM

var str = "<div> .... </div> <iframe src=".....">..</iframe> 
  text blabla 
  <iframe src="....."> ....blabla2.... </iframe> 
  ....
  <p>.....</p> 
  ......";
$('#test').html(str);

var ar=[]
$('#test iframe').each(function() {
    var x = $(this).wrap('<p/>').parent().html();//wrap the iframe with element p and get the html of the parent
    ar.push(x)//add the html content to array
});

//now ar contains the expected output

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM