html DOMDocument sınıfı ile metne

3 Cevap php

How to get a html page source code without htl tags? For example:

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<meta http-equiv="content-language" content="hu"/> 
<title>this is the page title</title>
<meta name="description" content="this is the description" />
<meta name="keywords" content="k1, k2, k3, k4" />
start the body content
<!-- <div>this is comment</div> -->
<a href="open.php" title="this is title attribute">open</a>
End now one noframes tag.
<noframes><span>text</span></noframes>
<select name="select" id="select"><option>ttttt</option></select>
<div class="robots-nocontent"><span>something</span></div>
<img src="url.png" alt="this is alt attribute" />

Ben bu sonucu gerekir:

this is the page title this is the description k1, k2, k3, k4 start the body content this is title attribute open End now one noframes tag. text ttttt something this is alt attribute

I need too the title and the alt attributes. Idea?

3 Cevap

Sen bir regex ile yapabilirdi.

$regex = '/\<.\>/';

< ve > etrafında bir şey kaldırmak için çok basit bir başlangıç ​​olacaktır. Ama bunu yapmak için, bir file_get_contents() olarak HTML veya metin içine kod dönecek diğer bazı fonksiyon çekmek zorunda gidiyoruz.

Zeyilname:

İsterseniz tek tek niteliklerini bu metni dışarı çekmek için daha karmaşık bir regex yazmak zorunda gidiyoruz, hem de çekti. Örneğin:

$regex2 = '/\<.(?<=(title))(\=\").(?=\")/';

Çekin (Ben düşünüyorum ... Ben hala RegEx öğreniyorum) başlığa daha önce hiçbir eşleşen diğer ifadeler vardı varsayarak, < ve title=" arasında herhangi bir metin. Yine, bu oldukça karmaşık bir regex süreç olacaktır.

Bu otomatik bir şekilde yapılamaz. PHP düğüm atlarsanız istediğiniz nitelikleri hangi bilemeyiz. Sen tek bir düğümün içeriğini kullanabilir ya da sadece tek bir XPath ile ne istediğinizi almak için ne zaman tanımlayan bir harita beslemek tüm özelliklerini ve textnodes üzerinde dolaşır bazı kod oluşturmak için olsaydı ya.

Alternatif bir XMLReader kullanmak olacaktır. Bu tüm belge üzerinde yineleme ve eleman isimleri için geri aramalar tanımlamanızı sağlar. Bu şekilde, ne elemanı ile ne tanımlayabilirsiniz. Görmek

Benim çözüm biraz daha karmaşık ama bu benim için iyi çalıştı.

Eğer XHTML olduğundan eminseniz, sadece XML olarak kodunu düşünebilirsiniz (ancak uygun bir ambalaj içinde her şeyi koymak zorunda).

Sonra XSLT ile size gerekenleri yapmak bazı temel şablonları tanımlayabilirsiniz.