[PHP] remote bestand, lokaal aanpassen.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey,

De door mijn gemaakte php script wil niet werken. De script heeft nu een opbouw als volgt:
  • - Open het remote bestand met fopen
  • - While loop word uitgevoert op de var die fopen inzich draagt
  • - Bepaalde HTML tags in de remote bestand worden nu vervangen door elk unieke verzonnen tags met str_replace
  • - 1e nu met preg_replace en wat regeex wil ik tussen 2 van de verzonnen tags alles selecteren en verwijderen
  • - 2e zelfde als de eerste alleen nu werkt het niet meer.
Wat is dus wil doen is een opgehaalde html bestand een gedeelte strippen of anders gezegt ik wil alleen 1 gedeelte hebben zodat ik het zelf kan gebruiken, dit doe ik nu dus door alles te strippen.

De Tags waar ik het hier boven over had zijn
<TOP_b_verwijder> <TOP_e_verwijder> en <BENEDEN_b_verwijder> <BENEDEN_e_verwijder> waarbij de b voor begin staat en e voor einde.

Google en PHP.net heb ik geen antwoord op deze vraag kunnen vinden

Zie hier de code zoals boven beschreven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//Verwerk Bestand
    while (!feof ($bestand)) {
        $data = fgets($bestand, 4096); 
        //debug [zonder aanpassingen]
        #echo $data;
        
        //[V] verander afbeeldingen
        $zoek = array('images/koersen_up.gif', 'images/koersen_down.gif', 'images/koersen_gelijk.gif');
        $vervang = array('afbeeldingen/koersen_hoog.gif', 'afbeeldingen/koersen_down.gif', 'afbeeldingen/koersen_gelijk.gif');
        $data_a1 = str_replace($zoek, $vervang, $data);
        //debug
        #echo "$data_a1";
        
        //[V] html tags > voor vervanging (begin/einde)
        $zoek = array('<?xml version="1.0" encoding="UTF-16"?>','</td></tr></table>');
        $vervang = array('<BEGIN>','</td></tr></table><EINDE>');
        $data_a2 = str_replace($zoek, $vervang, $data_a1);
        //debug
        #echo "$data_a2";
        
        //[V] top html tags > voor vervanging (TOP_b_verwijder/TOP_e_verwijder)
        $zoek = array('<html>','<BEGIN>');
        $vervang = array('<TOP_b_verwijder>','<TOP_e_verwijder><BEGIN>');
        $data_a3 = str_replace($zoek, $vervang, $data_a2);
        //debug
        #echo "$data_a3";
        
        //[V] beneden html tags > voor vervanging (BENEDEN_b_verwijder/BENEDEN_e_verwijder)
        $zoek = array('<EINDE>','</html>');
        $vervang = array("<EINDE>\n<BENEDEN_b_verwijder>",'<BENEDEN_e_verwijder>');
        $data_a4 = str_replace($zoek, $vervang, $data_a3);
        //debug
        #echo "$data_a4";
                
        //[V] strip code > TOP tags
        $data_a5 = preg_replace('/<TOP_b_verwijder>(.*?)<TOP_e_verwijder>/i','',$data_a4);
        //debug
        #echo "$data_a5";
        
        //[V] strip code > BENEDEN tags
        $data_a6 = preg_replace('/<BENEDEN_b_verwijder>(.*?)<BENEDEN_e_verwijder>/i','',$data_a5);
        //debug
        echo "$data_a6";
        

    }

Acties:
  • 0 Henk 'm!

  • PanMan
  • Registratie: November 1999
  • Laatst online: 18-09 22:50

PanMan

Spun!

Volgens mij (maar het is me niet helemaal 100% duidelijk wat je wilt), doe je het een beetje omslachtig. Kan je niet gewoon het best de posities van de stukken bepalen die je wilt hebben, en dan met 1 goede substr die eruit halen? Vooral dat eerst replacen en dan daarop matchen lijkt me niet de eenvoudigste weg.
Ik gebruik zelf voor zoiets iig meestal een substr.
En dan bijvoorbeeld zoiets:
PHP:
1
2
3
$fromstart=strstr($file, '<div align="right" class="classnr123">');
 $endpos = strpos($fromstart, "</P>");
 $text=substr($fromstart,0,$endpos);

Success!

Where a calculator on the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and weigh only 1.5 tons.
– Popular Mechanics, March 1949


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor je reply, maar nu krijg ik het helemaal niet meer werkende.

Wat ik wil is data ophalen van een remote html bestand en die verwerken/aanpassen en op mijn eigen site laten zien. Op me vorige manier, dus in me eerste post maakte ik op bepaalde punten op plekken eigen tags en die probeerde ik dan dus weg te knippen. Maar deze manier neem ik aan dat je de gewenste dingen gewoon meteen isoleert was dus ook een optie voor mij is alleen ik doe nu iets fouts, zoekmachines en php.net kom ik uit niet uit.

nieuwe code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function beurs() {
    //Bestand Openen
    $bestand = fopen ("http://cd-r.mine.nu/ontwikkeling/get_content/tmp.html", "r");
        if (!$bestand) {
            echo '<strong>FOUT : Kon remote bestand niet open.</strong>';
            exit;
            }
    
    //Verwerk Bestand
    while (!feof ($bestand)) {
        $data = fgets($bestand, 4096); 
        //debug [zonder aanpassingen]
        #echo $data;
        
        $fromstart = strstr($data, '<?xml version="1.0" encoding="UTF-16"?>'); 
        $endpos = strpos($fromstart, '</td></tr></table>'); 
        $data_a1 = substr($fromstart,0,$endpos); 

        echo $data_a1;
       }
}
beurs()

[ Voor 8% gewijzigd door Verwijderd op 15-01-2005 16:49 ]


Acties:
  • 0 Henk 'm!

  • PanMan
  • Registratie: November 1999
  • Laatst online: 18-09 22:50

PanMan

Spun!

Ik ben te goed voor deze wereld :)
Met een paar aanpassingen werkt je code wel. Ik heb onderstaande iig getest, en volgens mij doet het wat je wil:
Voornaamste aanpassing is file_get_contents, ipv fopen. Daardoor kan loopje daaronder ook weg. Jouw code werkt niet omdat data elke keer maar een stukje van de file bevatte, ipv de hele file. Je zou die stukjes aan elkaar kunnen plakken met een loopje, maar eigenlijk doet file_get_contents dat al voor je. Problem solved :).

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
function beurs() { 
    //Bestand Openen 
    $bestand = file_get_contents("http://cd-r.mine.nu/ontwikkeling/get_content/tmp.html");
        if (!$bestand) { 
               echo '<strong>FOUT : Kon remote bestand niet open.</strong>'; 
               exit; 
            } 
     
    //Verwerk Bestand 
    $data=$bestand;
        echo $data,"<hr>"; 
        $fromstart = strstr($data, '<?xml version="1.0" encoding="UTF-16"?>');  
         $endpos = strpos($fromstart, '</td></tr></table>');  
         $data_a1 = substr($fromstart,0,$endpos);  
        echo $data_a1; 
       } 
beurs()
?>

Where a calculator on the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and weigh only 1.5 tons.
– Popular Mechanics, March 1949


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanks, ik ben er meer dan 6 uur mee bezig geweest :X :/
zouden meer mensen zoals jouw moeten zijn :9~

- nu zit ik met een andere probleem, hoe kan ik nu de 2e gevonden waarden pakken, bij ipv die xml enz is het nu <td> </td> als voorbeeld, maar er staan 20 van die <td>'s in en hij pakt continue alleen maar de eerste

[ Voor 52% gewijzigd door Verwijderd op 15-01-2005 18:03 ]