2016-05-04 22 views
1

Ich habe dieses Stück HTML-Code als Zeichenfolge in einer Variablen gespeichert.Extrahieren von Daten aus einem HTML-Code

<p style="text-align: center;"> 
    <span style="font-size: small;font-family: comic sans ms', sans-serif;"> 
     <strong> 
      word1&nbsp; 
      <span style="line-height: 1.5;"> 
       word2&nbsp; 
      </span> 
      <span style="line-height: 1.5;"> 
       word3&nbsp; 
      </span> 
      <span style="line-height:1.5;"></span> 
     </strong> 
    </span> 
</p> 

Ich möchte nur word1&nbsp;, word2&nbsp; und word3&nbsp; extrahieren. Wie kann ich das auf einfachste und zeitsparende Weise tun?

Ich dachte der Charakter >, die nicht sofort von < vorangegangen wurde, kann ein Index sein, wo ich anfangen kann, meine Daten zu extrahieren.

+0

Es ist nicht ganz regex, aber 'document.querySelector ('p'). InnerText.split ('')' wird die Informationen mehr oder weniger extrahieren. – litel

+0

@litel -> Der obige HTML-Code war eine Zeichenfolge, die in einer Variablen gespeichert war. Wie werde ich es in meinem Fall tun? – Qerjiuthn

+0

Aus welcher Sprache extrahieren Sie die Variable? Wie bekommen Sie die Variable? – litel

Antwort

1

versuchen, etwas wie folgt aus:

var html = '<p style="text-align: center;"> 
    <span style="font-size: small;font-family: comic sans ms, sans-serif;"> 
     <strong> 
      alyssa&nbsp; 
      <span style="line-height: 1.5;"> 
       enganio&nbsp; 
      </span> 
      <span style="line-height: 1.5;"> 
       gono&nbsp; 
      </span> 
      <span style="line-height:1.5;"></span> 
     </strong> 
    </span> 
</p>'; 
    var values = $(html).find('p strong').text().split(' '); 

oder

var v =[]; 
v.push($(html).find('p strong').clone().find('span').remove().end().text()); 
$(html).find('p strong span').each(function(i,val) { 
if($.trim($(val).text()).length>0) 
v.push($(val).text()) 
}); 
console.log(v); 
+0

Der obige HTML-Code war eine Zeichenfolge, die in einer Variablen gespeichert war. Wie werde ich es in meinem Fall tun? – Qerjiuthn

+1

Angenommen, der Code ist in der Variablen myhtml, ersetzen Sie einfach $ ('p strong') durch $ (myhtml) .find ('p strong') und $ ('p strong span') durch $ (myhtml) .find ('p strong Spanne'). (wurde jetzt in der Antwort behoben) – Adder

1

Genau diese, es kehren Sie den gesamten Text innerhalb p tag - "alyssa&nbsp; , enganio&nbsp; , gono&nbsp;":

alert($("p").text()); 
+0

Der HTML-Code oben war eine Zeichenfolge in einer Variablen gespeichert. Wie werde ich es in meinem Fall tun? – Qerjiuthn

+1

fügen Sie das HTML in verstecktes div in Seite hinzu, verarbeiten Sie über Linie, und wie Sie Resultat erhalten, entfernen Sie einfach dieses versteckte div –

+0

OK, nachdem Sie alyssa enganio gono erhalten haben, können Sie sie einfach unter Verwendung der Zeichenkette teilen.Teilt(" "). und Sie können sie getrennt bekommen –

1

Mit jQuery Sie kann leicht

holen

können versuchen, diese: -

$('p').text(); 

es wird die kombinierten Textinhalt jedes Elements in dem Satz von abgestimmten Elementen zurückkehren, deren Nachkommen, einschließlich, oder auch die Textinhalte der angepassten Elemente setzen verwendet.

+0

Der obige HTML-Code war eine Zeichenfolge, die in einer Variablen gespeichert war. Wie werde ich es in meinem Fall tun? – Qerjiuthn

+0

Sie können diesen Code an einigen Stellen in Div hinzufügen und die Anzeigeeigenschaft "none" setzen und tun wie $ ('p'). Text(). Trim(). Split ("\ xa0"); –

0

Ich denke, Sie wollen Text des Tags ohne Text von Kindern abrufen.

So sehen nur this thread

Dieser Code:

console.log($("strong").clone().children().remove().end().text()); 

und einen String jQuery-Objekt this thread

Dieser Code sehen zu ändern:

var element = $('<div id="a1"></div><div id="a3"></div>'); 
2

Da Sie regex verwendet Tag werde ich eine Lösung mit Regex veröffentlichen.

var re = /\w+&nbsp;/g; 
var results = html.match(re); 

Dann können Sie die Ergebnisse von "Ergebnisse" -Array zugreifen.