2010-09-02 32 views
43

Olası Çoğalt:PHP Ayrıştırma HTML kodu

<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG! 

istediğim: Ben bir şey gibi eğer bir PHP değişkeni düzenlenen HTML kodu ayrıştırmak nasıl
Best methods to parse HTML

için sadece başlıkları arasındaki metni al ve bunu anlıyorum Normal İfadeleri kullanmak iyi bir fikir değildir.

+4

@ Bunu kapatan herkes yinelenir. Bu farklıdır çünkü OP, T1, T2, T3 'metinlerini istemez, ancak bir başlık bittikten sonra ve sonraki başlık başlamadan önce metin başlar. Örneğin. Lorem Ipsum. Yani, bu * farklı. Lütfen bir bak. – shamittomar

cevap

105

Kullanım PHP Document Object Model: Bu şekilde çıkışı

<?php 
    $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG'; 
    $DOM = new DOMDocument; 
    $DOM->loadHTML($str); 

    //get all H1 
    $items = $DOM->getElementsByTagName('h1'); 

    //display all H1 text 
    for ($i = 0; $i < $items->length; $i++) 
     echo $items->item($i)->nodeValue . "<br/>"; 
?> 

:

T1 
T2 
T3 

[DÜZENLE]: OP netleştirilmesi sonra:

İsterseniz içerik gibi Lorem Ipsum.

<?php 
    $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG'; 
    echo preg_replace("#<h1.*?>.*?</h1>#", "", $str); 
?> 

bu çıkışlar: vb doğrudan bu normal ifadeler kullanabilirsiniz tembel kahverengi KURBAĞA üzerinde

Lorem ipsum.The hızlı kırmızı tilki ...... atlar

+0

Teşekkürler, ama

arasındaki metni almam gerekiyor: "Lorem ipsum.", "Hızlı kırmızı tilki ..." vb. Yani H1 etiketleri arasındaki metin değil, bir son arasındaki metin etiket ve bir başlangıç ​​

. – Francisc

+0

@Francisc, Cevabı güncelledim. – shamittomar

+0

Bu daha yakın, teşekkürler. Daha açık olmaya çalışacağım: Başlıkların arasındaki metni almak, uzunluğunu saymak ve bir parçasını saklamak isteyip istemediğime karar vermek istiyorum. Yine de cevabınız çok faydalıdır. Ama yapmak istediğim, tüm metni saklamak, sadece bir kısmını gizlemek için bir miktar html eklemek. – Francisc