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

    estapolazione linee da HTML

    Buongiorno a tutti, mi presento: sono Daniele e da qualche mese per lavoro mi sono avvicinato al mondo del PHP.


    Vi sottopongo il mio problema

    da questa pagina
    http://www.fisica.uniud.it:8080/locations/2172.html

    mi interesserebbe estrapolare 2 linee.

    Ho usato

    codice:
    // ESTRAPOLO I DATI DI MAREA  
    $lines = file('http://www.fisica.uniud.it:8080/locations/2172.html');  
    // Loop through our array, show HTML source as HTML source; and line numbers too. 
    
    foreach ($lines as $line_num => $line) {   
    echo "Line #{$line_num} : " . htmlspecialchars($line) . "
    \n";  
    }
    Il problema che le linee variano a seconda che il picchi di marea (high tide / low tide) siano prima o dopo l'alba o il tramonto.

    quindi ci vorrebbe una funzione che mi estrae:
    solo prima linea dove è contenuto "low tide" e solo la prima dove è contenuto "high tide"

    Non so se mi sono spiegato, qualcuno saprebbe come fare.

    Grazie per la collaborazione

    Daniele

  2. #2
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    Non ho capito bene bene quello che cerchi comunque su qualche piccola guida trovi la risposta.
    Te la devi battere fra strpos(stringa, stringa) e forse substr(stringa, intero [, intero]) oppure strstr(stringa, stringa) devi vedere tu quello che ti occorre.
    La piccola guida potrebbe essere questa.
    http://php.html.it/guide/lezione/265...e-le-stringhe/

    e poi inserirlo in:
    echo "Line #{$line_num} : " . htmlspecialchars($line) . "
    \n";

  3. #3
    Prova così:

    Codice PHP:
    // ESTRAPOLO I DATI DI MAREA  
    $lines file('http://www.fisica.uniud.it:8080/locations/2172.html');  
    // Loop through our array, show HTML source as HTML source; and line numbers too. 
    $low=true;
    $high=true;
    foreach (
    $lines as $line_num => $line) {  

    if(
    $low==true && strpos(strtolower($line),"low tide")>0){
    $low=false;
    echo 
    "Line #[b]{$line_num}[/b] : " htmlspecialchars($line) . "
    \n"
    ;  
    };

    echo if(
    $high==true && strpos(strtolower($line),"high tide")>0){
    $high=false;
    echo 
    "Line #[b]{$line_num}[/b] : " htmlspecialchars($line) . "
    \n"
    ;  
    };


    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  4. #4
    Grazie a tutti per l'aiuto.




    In effetti con la soluzione proposta da softhare mi ritorna proprio
    codice:
     Line #9 : Fri,2010-06-11 20:42 CEST 0.22 meters High Tide
    Line #11 : Sat,2010-06-12 03:03 CEST -0.34 meters Low Tide
    cioè la prima Low Tide e la prima High Tide presente nel listone.

    Ma non riassegna le linee estrapolate (linea 1 e linea 2)

    Quindi purtroppo non ho risolto il mio problema, perchè dovrei stampare questi due dati tramite librerie GD facendo riferimento alla linea

    codice:
    //stampo  Low Tide 
    imagettftext($im, 30, 0, 35, $y,  $red, $font,ucfirst($lines[9]));
    
    //stampo Hight Tide 
    imagettftext($im, 30, 0, 700, $y,  $white, $font,ucfirst($lines[10]));

    ma se le lines mi continuano a cambiare ristamperò anche le righe contenenti sunrise e sunset (a seconda della posizione)
    forse gli if andrebbero messi anche su imagettftext?



  5. #5
    Non perderti in un bicchier d'acqua:

    Codice PHP:
    // ESTRAPOLO I DATI DI MAREA   
    $lines file('http://www.fisica.uniud.it:8080/locations/2172.html');   
    // Loop through our array, show HTML source as HTML source; and line numbers too. 
    $low=""
    $high=""
    foreach (
    $lines as $line_num => $line) {   

    if(
    $low=="" && strpos(strtolower($line),"low tide")>0){ 
    $low=htmlspecialchars($line); 
    echo 
    "Line #[b]{$line_num}[/b] : " htmlspecialchars($line) . "
    \n"
    ;   
    }; 

    echo if(
    $high=="" && strpos(strtolower($line),"high tide")>0){ 
    $high=htmlspecialchars($line); 
    echo 
    "Line #[b]{$line_num}[/b] : " htmlspecialchars($line) . "
    \n"
    ;   
    }; 


    e poi:

    Codice PHP:
    //stampo  Low Tide 
    imagettftext($im30035$y,  $red$font,$low));

    //stampo Hight Tide 
    imagettftext($im300700$y,  $white$font,$high)); 
    Eventualmente sostituisci tutti i $low con $linea[0] ed i $high con $linea[1], se proprio hai bisogno di un array...
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    spero ti possa aiutare, anche se ancora non ho capito cosa ci devi fare con le 2 righe...

    Codice PHP:
    <?php 
    $lines
    =file('http://www.fisica.uniud.it:8080/locations/2172.html');

    $low false;
    $hight false;
    foreach(
    $lines as $line){
        if(!
    $hight && preg_match('/High Tide$/',trim($line)) ){
            
    $hight $line;
            }
        if(!
    $low && preg_match('/Low Tide$/',trim($line))){
            
    $low $line;
            }
        if (
    $hight != false && $low != false) break;
        }

    echo 
    $low."
    "
    ;
    echo 
    $hight."
    "
    ;
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.