Nasıl "PHP Basit HTML DOM Parser" kullanabilirsiniz

3 Cevap php

Ben Şu anda PHP benim site şablonu için içerir kullanıyorum) = PHP için yeni. Ben bütün <head></head> bilgi içeren, benim başlığı var. Ne yapmak istiyorum sayfasından <h1></h1> etiketinin içeriğini almak ve de benim header.php <title></title> etiketi içine yankılanacak bir kod yazmak değildir.

Ben buradan PHP Basit HTML DOM Parser var: [http://simplehtmldom.sourceforge.net/] [1], ve böyle gider (nerede benim googling unutmak) bir kod bulundu:

<?php
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$html = file_get_html('http://www.myurl.com/');
foreach($html->find('#content h1') as $element){
    echo $element->plaintext;}
?>

Bence h1 etiketi içeriğini yankı gerekiyordu? Dediğim gibi, ben PHP için yeni ve ben sadece temelleri bilmek ve ben gerçekten (henüz) herhangi bir OOP biliyor bilmiyorum, ben aptal bir soru soruyorum özür dilerim.

O zaman değişken $ unsuru haline h1 etiketinin içeriğini koyarak, geçerli sayfayı almak, ve sonra yankılanan bulunuyor gibi görünüyor. Ben sayfanın içine koydu Ama hiçbir şey olmuyor. Herkes yanlış ne yapıyorum bana yardımcı olabilir misiniz? Okuma için teşekkür ederiz! =)

EDIT: İşte benim HTML bulunuyor

Header.php dosyasından:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<?php
/* current page url */
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
?>

<?php include '/home/dreami14/public_html/simplehtmldom/simplehtmldom/simple_html_dom.php' ?>

<title>
<?php
$url = curPageURL();
$html = file_get_html($url);
foreach($html->find('#main h1') as $element){
    echo $element->plaintext;}
?></title>

<link rel="stylesheet" type="text/css" href="/stylesheet.css" />
</head>
<body>

Test.php Gönderen:

<?php include '/home/dreami14/public_html/design/includes/head.php' ?>

<div id="main">
<h1>This should be the title</h1>
<p>Blah blah</p>
</div>

</body>
</html>

Ben herhangi bir hata, ama benim <title></title> boş değil.

Eklemek için Edit: Ayrıca, ben bu yüzden bu kısmı çalıştığını biliyorum belgenin kendisinde $ url yankılandı

3 Cevap

Eğer HTML nasıl yapılandığını söyleyerek değil, ama h1 kimliği ile bulmak istiyorsanız content kullanmak gerekir

foreach($html->find('h1#content') as $element){

şu anda bunu yapıyor yolu, bu "herhangi bir h1 elemanı kimliği ile within başka bir eleman content buluyorum" diyor.

I would restructure your code a little. Basically, you are trying to get the content in h1 before it is populated. In your test.php I would define an array with meta data and then include the header.
Like so:

test.php

<?php 
$meta = array();
$meta['title'] = "This should be the title";

include '/home/dreami14/public_html/design/includes/head.php' 

?>

<div id="main">
<h1><?php echo $meta['title'] ?></h1>
<p>Blah blah</p>
</div>

</body>
</html>

head.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <title>
 <?php echo (isset($meta) && isset($meta['title'])) ? $meta['title'] : "Default title"; ?>
   </title>
   <link rel="stylesheet" type="text/css" href="/stylesheet.css" />
</head>
<body>

Eğer daha karmaşık şeyler yapmak başlar Ama eğer Model-View-Controller tasarım deseni ve örneğin bir göz olmalıdır Zend framework, bu uygulayan.

Ben, sadece baskı çocuk içerik yolu olduğunu düşünüyor:

html = file_get_html($url);
foreach($ret->children as $child) {  
   echo $child;
}