Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188

    RegEx: diminuire il filtro (ed invece aumenta!)

    Cioè dovrei prelevare più dati da uno stesso sorgente, allargo allora il testo da includere avvicinando il primo delimitatore ma poi non matcha più!
    Mi sa che sbaglio qualcosa... chi mi sa dare una mano?


    I fatti:

    (SORGENTE: http://www.imdb.com/title/tt0055171/ nei codici sotto è il solo HTML come $output)
    Data la riga:
    codice:
    <a href="/name/nm0264770/?ref_=tt_cl_t3" itemprop="url"> <span class="itemprop" itemprop="name">Franco Fabrizi</span>
    Fino a ieri mi interessava solo gli attori, quindi per quel Franco Fabrizi quindi la regex era:
    codice:
    preg_match_all('~<span class=\"itemprop\" itemprop=\"name\">(.+)<\/span>~',$output,$matches);
    ed andava, infatti mi estraeva le righe a partire da quel SPAN e mi preparava degli array $matches[] con tutti gli attori della pagina (nel sorgente IMDB ce ne sono molte, di ricorrenze):
    codice:
    [0] => Array        (
                [0] => La moglie di mio marito
                [1] => Antonio Román
                [2] => José Alfayate
                [3] => José Alfayate
                [4] => Walter Chiari
                [5] => Yvonne Bastien
                [6] => Franco Fabrizi                          |
                [7] => Walter Chiari
                [8] => Yvonne Bastien
                [9] => Franco Fabrizi
                [10] => Fred Clark
                [11] => Akim Tamiroff
                [12] => Marisa de Leza
                [13] => Pietro De Vico
                [14] => Gabriella Andreini
                [15] => Carlos Larrañaga
                [16] => María Luisa Ponte
                [17] => Manolo Morán
                [18] => Claudio Biana
                [19] => Wanguard Film
                [20] => Explorer Film '58
                [21] => Faro Film
            )
    Oggi mi interessa anche l'id "nm0264770" quindi ho provato ad estendere la riga in:
    codice:
    preg_match_all('~<a href=\"\/name\/nm(.+)<\/span>~',$output,$matches);
    e non va una mazza!
    L'array $matches[] è ora vuota, non contiene niente:
    codice:
    print_r($matches);
    restituisce
    codice:
    Array
    (
    )

    Forse mi incasino con qualche escape?
    Non mi sembra, sia le virgolette che lo slash lo includo con un backslash, con la stessa logica della vecchia regex dove funzionava.
    Anche il delimitatore '~' lo uso uguale.
    Perchè ora mi dice che non esegue la regex?


    Fra l'altro l'ho provato su vari tester online (ad esempio https://regex101.com/
    http://www.lumadis.be/regex/test_regex.php ) e da loro va.
    Non solo, il primo crea pure il codice PHP e neppure quello va (siamo sempre lì: non trova corrispondenze la funzione).


    Grazie in anticipo per chi ha la pazienza anche solo di leggerlo!

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo :

    Codice PHP:
    $output file_get_contents('http://www.imdb.com/title/tt0055171/');
    preg_match_all('~<a href="\/name\/nm([0-9]+)[^>]+>\s*<span class=\"itemprop\" itemprop=\"name\">(.+)<\/span>\s*</a>~',$output,$matches); 
    var_dump($matches); 


    codice HTML:
      1 => 
        array
          0 => string '0739794' (length=7)
          1 => string '0019100' (length=7)
          2 => string '0019100' (length=7)
          3 => string '0157067' (length=7)
          4 => string '0060519' (length=7)
          5 => string '0264770' (length=7)
          6 => string '0157067' (length=7)
          7 => string '0060519' (length=7)
          8 => string '0264770' (length=7)
          9 => string '0163939' (length=7)
          10 => string '0848667' (length=7)
          11 => string '0508148' (length=7)
          12 => string '0212121' (length=7)
          13 => string '0028337' (length=7)
          14 => string '0488585' (length=7)
          15 => string '0690592' (length=7)
          16 => string '0394541' (length=7)
          17 => string '0080550' (length=7)
      2 => 
        array
          0 => string 'Antonio Román' (length=14)
          1 => string 'José Alfayate' (length=14)
          2 => string 'José Alfayate' (length=14)
          3 => string 'Walter Chiari' (length=13)
          4 => string 'Yvonne Bastien' (length=14)
          5 => string 'Franco Fabrizi' (length=14)
          6 => string 'Walter Chiari' (length=13)
          7 => string 'Yvonne Bastien' (length=14)
          8 => string 'Franco Fabrizi' (length=14)
          9 => string 'Fred Clark' (length=10)
          10 => string 'Akim Tamiroff' (length=13)
          11 => string 'Marisa de Leza' (length=14)
          12 => string 'Pietro De Vico' (length=14)
          13 => string 'Gabriella Andreini' (length=18)
          14 => string 'Carlos Larrañaga' (length=17)
          15 => string 'María Luisa Ponte' (length=18)
          16 => string 'Manolo Morán' (length=13)
          17 => string 'Claudio Biana' (length=13)
    
    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

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.