Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problemi sa DOM, loadHTML i saveHTML

[es] :: PHP :: Problemi sa DOM, loadHTML i saveHTML

[ Pregleda: 2499 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kukipei
Niš

Član broj: 19564
Poruke: 164
*.adsl-a-1.sezampro.yu.

Sajt: www.bestbetinfo.com


Profil

icon Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 11:34 - pre 190 meseci
Pozdrav svima.

Koristim sledeci kod:
Code:
header('Content-type: text/plain');
$doc = new DOMDocument();        
        
        if (!$doc->loadHTML("gfd"))
        {
            echo "ERROR LOADING HTML STRING";
            exit();
        }
        $output = $doc->saveHTML();
        echo $output;


i kao rezultat dobijem sledeci tekst:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>gfd</p></body></html>


E sad. Da li je moguce da za rezultat dobijem samo
Code:
gfd

bez ovih dodatnih tekstova <!DOCTYPE html PUBLIC...

Nadam se da ste me razumeli.
Pozdrav
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
79.101.240.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 11:59 - pre 190 meseci
Ajde prvo reci šta pokušavaš da uradiš i koja je to klasa DOMDocument (za šta služi)?

Ako hoćeš samo gfd, odradi echo "gfd";
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 12:06 - pre 190 meseci
Probaj ovako:
Code:

<?php
$doc = new DOMDocument();
$doc->loadHTML("<html><body><p>nekiTekst</p></body></html>");
echo $doc->saveHTML();
?>

Ja mislim da toj funkciji morash da prosledish neki html kod...

btw proveri dal' si taj tvoj kod stavio izmedju <?php i ?>...
 
Odgovor na temu

kukipei
Niš

Član broj: 19564
Poruke: 164
*.adsl-a-1.sezampro.yu.

Sajt: www.bestbetinfo.com


Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 12:18 - pre 190 meseci
Hvala momci za pomoc

Citat:
Nemanja Avramović: Ajde prvo reci šta pokušavaš da uradiš i koja je to klasa DOMDocument (za šta služi)?
http://www.php.net/manual/en/class.domdocument.php

Citat:
raynor: Probaj ovako:
Code:

<?php
$doc = new DOMDocument();
$doc->loadHTML("<html><body><p>nekiTekst</p></body></html>");
echo $doc->saveHTML();
?>

Ja mislim da toj funkciji morash da prosledish neki html kod...

btw proveri dal' si taj tvoj kod stavio izmedju <?php i ?>...


dobio sam kao rezultat:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>nekiTekst</p></body></html>


e meni treba da mi izbaci u ovom slucaju samo
Code:
<html><body><p>nekiTekst</p></body></html>

znaci samo ono sto se nalazu kao argument u funkciji $doc->loadHTML(argument);
bez
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">


cini mi sa da sama funkcija generise taj dodatak:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 12:23 - pre 190 meseci
Problem je bio u funkciji header, treba da umesto plain napishesh html, ovako:
Code:
header('Content-type: text/html');

Onda ce da radi...
 
Odgovor na temu

kukipei
Niš

Član broj: 19564
Poruke: 164
*.adsl-a-1.sezampro.yu.

Sajt: www.bestbetinfo.com


Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 12:34 - pre 190 meseci
Onda ce u browseru lepo da ispise tekst. Ali kada vidim source te strane on ce biti isti kao gore. Znaci sa onim
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>nekiTekst</p></body></html>

Hvala u svakom slucaju.
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 12:46 - pre 190 meseci
Citat:
kukipei:Ali kada vidim source te strane on ce biti isti kao gore.

Pa takav i treba da bude source, jer verovatno se po default-u generishu tagovi za pasus (<p></p>), pored onih html i body tagova...
 
Odgovor na temu

kukipei
Niš

Član broj: 19564
Poruke: 164
*.adsl-a-1.sezampro.yu.

Sajt: www.bestbetinfo.com


Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 12:55 - pre 190 meseci
Verovatno se sami generisu. Problem mi sto ja sad hocu da tu stranicu (string) koju sam dobio pomocu javascripta i innerHTML funkcije ubacim u vec postojecu stranicu. Ispada da cu ja sad imati 2 zaglavlja na jednoj stranici. Originalni i drugi onaj generisan uz pomoc domdocument funkcija.
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.rs.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 13:04 - pre 190 meseci
Cutah do sad jer ne znam o cemu se radi ali mi radoznalost ne da mira.
Cemu to uopste sluze sto usput i ne radi?
Mislim, mora li na taj nacin da se kreiraju html tagovi ili sta vec, moze li to nekako drugacije da se izvede?
Iskreno, nisam se do sada susretao sa koriscenjem ove klase (a sumnjam i da cu ikada namerno) pa me zanima konkretan primer kako se koristi, tj cemu sluzi.
 
Odgovor na temu

kukipei
Niš

Član broj: 19564
Poruke: 164
*.adsl-a-1.sezampro.yu.

Sajt: www.bestbetinfo.com


Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 13:24 - pre 190 meseci
evo saljem sve kodove pa ko voli nek izvoli:

parser.class.php
Code:
<?php
    //Make sure no one tries to access this file directly
    if(!defined("ROOT"))
        exit();

class parser {
    var $params;
    var $path = "templates/";

    function parser($parameters) {
        $this->params = $parameters;
    }

    function setParams($params) {
        $this->params = $params;
    }
    
    function parsePage($fileName) {
        $return='';
        $file = fopen($this->path.$fileName,"r");
        if (!$file) {
            error_log("File not found $fileName");
            return "";
        }
        while (! feof($file)) {
            $line = fgets($file,2048);
            /*if (preg_match('/\[%([\w\-]+?)%\]/e', $line))
            {
                foreach ($this->params as $key => $value)
                {
                    
                }
            }*/
    
            $return .= preg_replace('/\[%([\w\-]+?)%\]/e',"isset (\$this->params['\\1']) ? \$this->params['\\1'] : \"\"",$line);
        }
        return $return;
    }
    
    /**
     * Function for parsing a table.
     *
     * @param string $tableLabel name of table
     * @param 2D array $arr_data data to be added
     * @param string $strToParse string for parsing
     */

    function parseTable($tableLabel, $arr_data, $strToParse)
    {
        $doc = new DOMDocument();        
        
        if (!$doc->loadHTML($strToParse))
        {
            echo "ERROR LOADING HTML STRING";
            exit();
        }
        $xpath = new DOMXPath($doc);
        
        $hrefs = $xpath->evaluate("/html/body//table");
        foreach ($hrefs as $value)
        {
            $attribute = $value->getAttribute("name");
            if ($attribute != $tableLabel)
                continue;
            
            $tr = $value->getElementsByTagName("tr");
            $trLength = $tr->length;
            $arr_dataLength = count($arr_data);
            
            $indexTr = 0;
            while($trLength < $arr_dataLength )
            {
                $node = $tr->item($indexTr++)->cloneNode(true);
                $value->appendChild($node);
                $trLength++;
            }
            
            while($trLength > $arr_dataLength )
            {
                $node = $tr->item($trLength-1);
                $value->removeChild($node);
                $trLength--;
            }

            $indexTr = 0;
            
            foreach ($arr_data as $dataValues)
            {
                $trChildNodes = $tr->item($indexTr)->childNodes;
                $dataValues = array_values($dataValues);
                for ($indexTrChildNodes = 0;($indexTrChildNodes < $trChildNodes->length) && 
($trChildNodes->item($indexTrChildNodes)->nodeName != "#text"); $indexTrChildNodes++)
                {
                    $trChildNodes->item($indexTrChildNodes)->nodeValue = $dataValues[$indexTrChildNodes];
                }
                                
                $indexTr++;
            }
        }
        $output = $doc->saveHTML();
        echo $output;
    }
}
?>


search.php
Code:
<?php
//header('Content-type: text/plain');
require_once("../cfg.inc/include.php");
//print_r($_GET);
//exit();
extract($_GET);
$db_handler = new db_handler();
$smarty = new Smarty();
if ($check_bean_info == "false" && $check_roast_info == "false" && $check_blend_info == "false" && $check_taste_info == "false")
{
    exit("-1");
}

//bean info
if ($check_bean_info == "true")
{
    $sql_where = "";
    foreach ($_GET as $key=>$value)
    {
        $pos = strpos($key, "1_");
        if ($pos === false)
            continue;
        $table_column_name = str_replace("1_", "", $key);
        if ($value != "") $sql_where .= $table_column_name . " like '%" . $value . "%' and ";    
    }
    $sql_where = trim($sql_where, " and ");
    $sql_query = sprintf("select id, bean_name, archival, share, notes, wholesaler, crop_year, purchase_year, 
supplier, product_weight, shipping_weight, sale_price, bean_country, the_lot, member_id, ins_time 
    from 
    w2c_beans where %s", $sql_where);
    $result = $db_handler->get_result_db($sql_query);
    while($rs = mysql_fetch_assoc($result))
    {
        $items[] = $rs;
    }
}
//creating output
$template = "search_results_roast.tpl";
$param = array();
$parser = new parser($param);
$parser->path = "../templates/";
$strToParse = $parser->parsePage($template);
$parser->parseTable("search_results_1", $items, $strToParse);
//echo $strToParse;
?>


search_results_roast.tpl
Code:
<form name="search_frm" id="search_frm" method="get" action="modules/search.php" onsubmit=" submit_search_frm(); return false;">
<table align="center" width="1000px;"  bgcolor="#5E3718" bordercolor="#F19D3D" border="0">
<tr>
<td  align="center" style="font: bold 12px Verdana; padding-top:1em;"> 
SEARCH DATABASE FOR PARTICULAR BEAN-ROAST-BLEND combination</td>
</tr>
<tr>
        <td>
        <table border=1 name="search_results_1">
<tr>
<td bgcolor=silver class='medium'>id</td>
<td bgcolor=silver class='medium'>bean_name</td>
<td bgcolor=silver class='medium'>archival</td>
<td bgcolor=silver class='medium'>share</td>
<td bgcolor=silver class='medium'>notes</td>
<td bgcolor=silver class='medium'>wholesaler</td>
<td bgcolor=silver class='medium'>crop_year</td>
<td bgcolor=silver class='medium'>purchase_year</td>
<td bgcolor=silver class='medium'>supplier</td>
<td bgcolor=silver class='medium'>product_weight</td>
<td bgcolor=silver class='medium'>shipping_weight</td>
<td bgcolor=silver class='medium'>sale_price</td>
<td bgcolor=silver class='medium'>bean_country</td>
<td bgcolor=silver class='medium'>the_lot</td>
<td bgcolor=silver class='medium'>member_id</td>
<td bgcolor=silver class='medium'>ins_time</td></tr>
<tr>
<td class='normal' valign='top'>311</td>
<td class='normal' valign='top'>test_serch_bean_wert_23</td>
<td class='normal' valign='top'>0</td>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>&nbsp;</td>
<td class='normal' valign='top'>test</td>
<td class='normal' valign='top'>2008</td>
<td class='normal' valign='top'>2008</td>
<td class='normal' valign='top'>test</td>
<td class='normal' valign='top'>200kg</td>
<td class='normal' valign='top'>200kg</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>Brasil</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>8</td>
<td class='normal' valign='top'>2008-05-14 05:50:12</td>
</tr>
</table></td>
    </tr>
</table></form>



Ja stranicu search.php pozivam preko ajax.
Ta stranica nalazi rezultate u bazi i na osnovu rezultata i search_results_roast.tpl generise html tabelu.
Parsira search_results_roast.tpl uzimajuci obe vrste iz tabele na toj stranici i generise novu tabelu samo sa rezultatima iz search-a
(ako je potrebno dadaje nove vrste ili brise visak).
Tu tabelu (ajax odgovor) stavljam na bilo koje mesto na stranici koja je generisala ajax poziv.
Sve to lepo radi.
Medjutim nervira me to sto generise one elemente odozgo. Tako da ja sada na stranici imam dva html i body taga.
 
Odgovor na temu

beep
Srbija/Vrbas

Član broj: 19294
Poruke: 198
*.adsl-a-1.sezampro.yu.

Sajt: keselj.xyz


+1 Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 16:22 - pre 190 meseci
Ako sam te dobro razumeo (prvi post)

Code:
echo preg_replace("/(.*<body><p>)|(<\/p><\/body>.*)/s","",$output);
 
Odgovor na temu

kukipei
Niš

Član broj: 19564
Poruke: 164
*.adsl-a-1.sezampro.yu.

Sajt: www.bestbetinfo.com


Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 19:28 - pre 190 meseci
probao sam i to. Medjutim ostaje ono:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 
Odgovor na temu

beep
Srbija/Vrbas

Član broj: 19294
Poruke: 198
*.adsl-a-1.sezampro.yu.

Sajt: keselj.xyz


+1 Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML02.08.2008. u 19:47 - pre 190 meseci
Evo, ja probo jos jednom i ostane samo 'gfd' , i kad se pogleda source pise 'gfd' ... To sto ti ostane je zato sto nije naveden modifikator 's' na kraju regexp-a ...Kod mene radi a nek proveri jos neko
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML03.08.2008. u 01:34 - pre 190 meseci
Mene zanima koji je to mentalni proces koji te je naveo da koristis DomDocument klasu za taj zadatak?

DomDocument je klasa namenjena manipulisanju/generisanju kompletnih XML ili HTML strana a ne HTML/XML isecaka. Zato se i generise header jer klasa dodaje automatski ono sto fali normalnom HTML dokumentu.

Ako hoces da dodas tag u dokument ili tekst onda je dovoljno da ga ispises sa komandom print ili echo i tacka.

PHP nije Javascript i stvari se ne rade na isti nacin.
Tko leti vrijedi
 
Odgovor na temu

kukipei
Niš

Član broj: 19564
Poruke: 164
*.adsl-a-1.sezampro.yu.

Sajt: www.bestbetinfo.com


Profil

icon Re: Problemi sa DOM, loadHTML i saveHTML03.08.2008. u 07:30 - pre 190 meseci
Citat:
beep: Evo, ja probo jos jednom i ostane samo 'gfd' , i kad se pogleda source pise 'gfd' ... To sto ti ostane je zato sto nije naveden modifikator 's' na kraju regexp-a ...Kod mene radi a nek proveri jos neko


U pravu si. Sad radi i kod mene. Ja sam probao bez "s". Bravo i hvala.
Pozdrav
 
Odgovor na temu

[es] :: PHP :: Problemi sa DOM, loadHTML i saveHTML

[ Pregleda: 2499 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.