2012-11-19 25 views
6

Olası Çoğalt:
How to parse and process HTML with PHP?PHP ayrıştırma HTML etiketleri

ben PHP için oldukça yeni. Bir sayfanın bir beden etiketinin bir string değişkeninde var. Etiket adı tag1'in verildiği bir etiket içerip içermediğini öğrenmek istiyorum ve eğer öyleyse, yalnızca dizgeden bu etiketi al. Bunu sadece PHP'de nasıl yapabilirim?

Teşekkürler!

+0

Buna yaklaşmanın çeşitli yolları vardır ve hepsi tam olarak ne yapmak istediğinize bağlıdır. * * HTML'yi ayrıştırmanız gerekiyor mu? Bir HTML ayrıştırıcısı kullanın. Etiketleri soymak ve sözdiziminin belirli sınırlar içinde olduğu bilinir mi? Strip_tags() işlevini kullanın. Belirli etiketleri rastgele HTML'de kara listeye almak istiyor musunuz? Belki de bunun yerine * beyaz listeye * izin verilen etiketler hakkında daha iyi düşünün? HTML Purifier gibi bir kitaplık kullanın. – deceze

+0

@Troy Anwser'im yardımcı olduysa, lütfen bunu kabul etsin, böylece diğerleri bunu öğrenebilir. Eğer değilse size nasıl yardımcı olabilirim? – RTB

+0

Teşekkürler! Lütfen aşağıdaki yorumumu aşağıya bakın –

cevap

11

Böyle bir şey bakıyor olurdu:

<?php 
$content = ""; 
$doc = new DOMDocument(); 
$doc->load("example.html"); 
$items = $doc->getElementsByTagName('tag1'); 
if(count($items) > 0) //Only if tag1 items are found 
{ 
    foreach ($items as $tag1) 
    { 
     // Do something with $tag1->nodeValue and save your modifications 
     $content .= $tag1->nodeValue; 
    } 
} 
else 
{ 
    $content = $doc->saveHTML(); 
} 
echo $content; 
?> 

DomDocument tüm bir HTML veya XML belgesini temsil eder; belge ağacının kökü olarak hizmet eder. Bu yüzden geçerli bir işaretlemeye sahip olacaksınız ve Etiket Adıyla öğeleri bularak yorum bulamayacaksınız.

+0

Bu sadece aradığım şey. –

+0

Teşekkürler! lütfen benim görüşüme aşağıdaki –

0

Hızlı yolu: o zaman/Tag1 dizin pozisyonu aramaya Tag1 indeksi pozisyonu için

bak. Sonra bu iki dizin arasındaki dizgiyi kesin. Php.net üzerinde strpos ve substr konusuna bakın. Ayrıca, diziniz çok uzunsa bu işe yaramayabilir.

$pos1 = strpos($bigString, '<tag1>'); 
$pos2 = strpos($bigString, '</tag1>'); 
$resultingString = substr($bigString, -$pos1, $pos2); 

Sen $ resultingString sağ olsun $ pos1 $ ve POS2 bazı birimler ekleyebilir ve/veya substract gerekebilir.

doğru yolu ( nefes içlerinde sen Tag1 ile yorumlarınız yoksa): html ayrıştırıcıları

Look up

+0

Ve etiketlerin pozisyonlarını nasıl görüyorsunuz? Bunun geçerli bir HTML olduğunu unutmayın:

+0

teşekkürler! lütfen yorumumu aşağıya bakın –