Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1

    recupero di un elemento con testo interno

    vorrei recuperare tutti li elemeti div con i rispettivi testi interni, che dovrei aggiungere, modificare al mio codice ?




    $uri = 'http://localhost/home.html';




    $get = file_get_contents($uri) /*string*/ ;




    print preg_match_all('/<div></div>/', $get, $matches);




    print_r($matches);




    print $matches[0]

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    <div>(.*?)</div>

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo (che pero' non funziona con div in div).

    Codice PHP:
    <?php
    $testo 
    "<h1>pippo</h1><div id='toto'>44555555</div>LLLLLLLLLLLLLLLLLLL<div id='titi'>AAAAAAAAA66222222222</div><h2>caio</h2>";

    $patternInc "/(<div[^>]*>(.+?)<\/div>)/msi";

    print 
    preg_match_all($patternInc ,$testo$matches);
    var_dump($matches);
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    badaze io nel mio codice html avevo solo due div e un h2
    codice HTML:
    <html>
    <head></head>
    <body>
    <div>Agosto</div>
    <div>Venerdi</div>
    <h2>Settembre</h2>
    </body>
    </html>
    ma provando il tuo codice con print_r e var_dump mi fa vedere il doppio

    codice HTML:
    $uri = 'http://localhost/home.html';
    
    $get = file_get_contents($uri) /*string*/ ;
    
    $pattern = "/(<div[^>]*>(.+?)<\/div>)/msi"  ;
    
    print preg_match_all($pattern, $get, $matches);
    
    print_r($matches);
    con print_r mi da questo output

    2Array ( [0] => Array ( [0] => Agosto
    [1] => Venerdi
    ) [1] => Array ( [0] => Agosto
    [1] => Venerdi
    ) [2] => Array ( [0] => Agosto [1] => Venerdi ) )


    invece con var_dump

    array(3) { [0]=> array(2) { [0]=> string(17) "Agosto
    " [1]=> string(18) "Venerdi
    " } [1]=> array(2) { [0]=> string(17) "Agosto
    " [1]=> string(18) "Venerdi
    " } [2]=> array(2) { [0]=> string(6) "Agosto" [1]=> string(7) "Venerdi" } }

    inoltre ero curioso di sapere perche alla fine del pattern ci metti MSI? a che cosa serve?
    Ultima modifica di riccardo94; 25-08-2018 a 15:07

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quote Originariamente inviata da riccardo94 Visualizza il messaggio
    ma provando il tuo codice con print_r e var_dump mi fa vedere il doppio.
    ...
    inoltre ero curioso di sapere perche alla fine del pattern ci metti MSI? a che cosa serve?
    Quando ti aspetti una cosa e ne accade un'altra le cose sono 2: hai fatto un errore nel codice, oppure non conosci le funzioni che stai usando.
    Leggi la documentazione della funzione preg_match_all() e qualche altra informazione.
    Allo stesso modo per i modificatori delle espressioni regolari.

    Cerca informazioni e studia, ti risparmi un sacco di tempo e le cose ti restano più impresse.

  6. #6
    scusa ma lo scopo di questo forum non era aiutare a capire chi non capiva dalla doc ufficiale? comunque anche se tolgo il print dalla funzione preg match all, mi restutuisce lo stesso risultato doppio, come mai?

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quote Originariamente inviata da riccardo94 Visualizza il messaggio
    scusa ma lo scopo di questo forum non era aiutare a capire chi non capiva dalla doc ufficiale? comunque anche se tolgo il print dalla funzione preg match all, mi restutuisce lo stesso risultato doppio, come mai?
    Visualizza il sorgente della pagina che ottieni, ti accorgerai che in realtà l'array $matches è fatto così:
    codice:
    Array
    (
        [0] => Array
            (
                [0] => <div>Agosto</div>
                [1] => <div>Venerdi</div>
            )
        [1] => Array
            (
                [0] => <div>Agosto</div>
                [1] => <div>Venerdi</div>
            )
        [2] => Array
            (
                [0] => Agosto
                [1] => Venerdi
            )
    )
    Quindi:
    in [0] hai i risultati completi dei tag che racchiudono ciò che stai cercando (quindi ci sono anche i tag <div> che usi come delimitatori)

    in [1] hai la stessa cosa di sopra cioè, come dice la documentazione: "an array of strings matched by the first parenthesized subpattern", infatti se dal pattern togli le parentesi tonde all'inizio e alla fine, questo secondo array sparisce

    in [2] hai i valori che ha trovato, senza i delimitatori, quindi senza i tag <div>

  8. #8
    output sopra la pagina

    array(3) { [0]=> array(2) { [0]=> string(17) "Agosto
    " [1]=> string(18) "Venerdi
    " } [1]=> array(2) { [0]=> string(17) "Agosto
    " [1]=> string(18) "Venerdi
    " } [2]=> array(2) { [0]=> string(6) "Agosto" [1]=> string(7) "Venerdi" } }

    fa generare questo codice sorgente

    <body>array(3) {
    [0]=&gt;
    array(2) {
    [0]=&gt;
    string(17) "<div>Agosto</div>"
    [1]=&gt;
    string(18) "<div>Venerdi</div>"
    }
    [1]=&gt;
    array(2) {
    [0]=&gt;
    string(17) "<div>Agosto</div>"
    [1]=&gt;
    string(18) "<div>Venerdi</div>"
    }
    [2]=&gt;
    array(2) {
    [0]=&gt;
    string(6) "Agosto"
    [1]=&gt;

    il che fa vedere che i tag div ci sono sempre.
    non so se il pattern potrebbe funzionare senza le parentesi tonde.

    inoltre non mi fa vedere nessun elemento del mio array
    echo $matches[1];

    mi restituisce solo array, invece di venerdi o agosto

    in definitiva vorrei maggiore chiarimenti perche non ho capito ancora completamente
    Ultima modifica di riccardo94; 26-08-2018 a 11:19

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non capisco cosa vuoi fare ?

    Pensi che basti fare un var_dump per ottenere cio' che vuoi ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    array(3) { [0]=> array(2) { [0]=> string(17) "Agosto
    " [1]=> string(18) "Venerdi
    " } [1]=> array(2) { [0]=> string(17) "Agosto
    " [1]=> string(18) "Venerdi

    " } [2]=> array(2) { [0]=> string(6) "Agosto" [1]=> string(7) "Venerdi" } }

    badaze, sapresti dirmi perche ce solo il testo array invece del div se faccio il seguente codice : echo $matches[1];

Tag per questa discussione

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.