Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [DOM] è utilizzabile solo con XML ?

    in particolar modo faccio riferimento al PHP 4.4.1 che quindi ha DOMXML e non DOM (Php5).

    Ma php supporta il DOM solo nell'ambito dei file XML ? quindi se voglio cercare un DIV di una pagina XHTML non posso farlo? c'ho provato ma pare che pretenda XML puro e ben formattato....

    quindi se volessi riccorrere al DOM in PHP ma stile JAVASCRIPT non si può?
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  2. #2
    in parole povere uso Ajax per aggiornare alcuni div, ma vorrei recuperare (selezionare) questi div tramite php e non tramite javascript (altrimenti dove sta il guadagno?)

    il fatto è che le mie pagine sono in XHTML, mentre la maggior parte delle classi php lavorano esclusivamente su XML
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  3. #3

    [PILLOLINA] Simulare Funzione DOM getElementById in PHP4

    ricapitolando:
    - se hai PHP5 vai tranquillo con le funzioni DOM, che lavorano sia XML, che XHTML e HMTL
    - se hai PHP4 con Hosting Windows scordatelo
    - se hai PHP4 con Hosting Linux ci sono le XMLDOM che per manipolare XHTML tocca usare delle classi: DOM Adapter è l'unico che simula sufficientemente e semplicemente il DOM di PHP5

    tuttavia, avendo Php4 su Linux, dover ricorrere ad una classe per un'operazione del cavolo mi scoccia: devo prendere il div di una pagina per restituirlo ad una richiesta Ajax

    ho quindi creato questo breve codice che fa questo in Php4:


    Codice PHP:
    <?php
    $h    
    ='';        // handler della sessione tramite CURL
    $u    ='http://www.poste.it';     // url da aprire
    $p    ='';         // codice della pagina
    $i    ='colonnaDestraHome';     // id da cercare
    $t    ='div'// tag da cercare
    $c    =1;         // conteggio dei tag ancora da cercare per arrivare alla chiusura del nostro tag di apertura
    $n    =0;         // posizione del tag attualmente trovato durante la ricerca nel codice
    $s    =0;         // posizione del primo carattere successivo ancora da controllare

    //prendo la pagina
    $h curl_init($u);
    curl_setopt($hCURLOPT_HEADER0);                        // disattiva l'invio di intestazioni
    curl_setopt($hCURLOPT_RETURNTRANSFER1);        // disattiva l'output della pagina
    $p=curl_exec($h);
    curl_close($h);

    //tolgo quanto c'è prima: trovato l'id tolgo il codice fino al suo successivo ">"
    $n=strpos($p,'id="'.$i.'"');    if($n===false) die('Tag non trovato');
    $n=strpos($p,'>',$n);
    $p=substr($p,$n+1);

    //cerco il punto del codice fino a dove mi serve: finchè ci sono tag da trovare, avanzo i puntatori n e s
    while ($c>0){
        
    $n=strpos($p,$t,$s); if($n===false) die('Tag di chiusura non trovato'); 
        if(
    substr($p,$n-1,1)=="/"$c--; else    $c++;    // aumento il contatore dei tag di chiusura da cercare se il tag trovato è di apertura
        
    $s=strpos($p,'>',$n)+1;                                            // aggiorno il puntatore comprendendo il codice fino al tag trovato
    };

    //pubblico
    header("Content-type: text/xml; charset=UTF-8");
    echo 
    substr($p,0,$n-2);
    ?>



    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  4. #4
    modifica
    - corretto l'uso delle variabili
    - corretta la ricerca dei tag, adesso è un attimino più precisa

    note
    - ovviamente tutto funziona perchè lavoro con pagine XHTML valide
    - la ricerca dei tag potrebbe essere ottimizzata con le regexp, ma non avevo voglia di stressarmi con qui geroglifici

    Codice PHP:
    s<?php 
    $h    
    ='';        // handler della sessione tramite CURL 
    $u    ='http://www.poste.it';     // url da aprire 
    $p    ='';         // codice della pagina 
    $i    ='colonnaDestraHome';     // id da cercare 
    $t    ='div'// tag da cercare 
    $c    =1;         // conteggio dei tag ancora da cercare per arrivare alla chiusura del nostro tag di apertura 
    $n    =0;         // posizione del tag attualmente trovato durante la ricerca nel codice 
    $s    =0;         // posizione del primo carattere successivo ancora da controllare 

    //prendo la pagina
    $h curl_init($u);
    curl_setopt($hCURLOPT_HEADER0);                        // disattiva l'invio di intestazioni
    curl_setopt($hCURLOPT_RETURNTRANSFER1);        // disattiva l'output della pagina
    $p=curl_exec($h);
    curl_close($h);

    //tolgo quanto c'è prima: trovato l'id tolgo il codice fino al suo successivo ">"
    $n=strpos($p,'id="'.$i.'"');    if($n===false) die('Id non trovato');
    $s=strpos($p,'>',$n)+1;
    $p=substr($p,$s); $s=0;

    //cerco il punto del codice fino a dove mi serve: finchè ci sono tag da trovare, avanzo i puntatori n e s
    while ($c>0){
        
    $n=strpos($p,$t,$s); if($n===false) die('Tag di chiusura non trovato'); 
        if(
    substr($p,$n-2,6)=='</'.$t.'>'$c--; elseif(substr($p,$n-1,4)=='<'.$t)    $c++;    // aumento il contatore dei tag di chiusura da cercare se il tag trovato è di apertura
        
    $s=strpos($p,'>',$n)+1;    // aggiorno il puntatore comprendendo il codice fino al tag trovato
    };

    //pubblico
    header("Content-type: text/xml; charset=UTF-8");
    echo 
    substr($p,0,$n-2);
    ?>
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.