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

    [REGEX] Estrapolare testo da HTML TAGS

    Ciao ragazzi,
    sono nuovo di qui
    Avrei un problemino cone le espressione regolari, non sono molto simpatiche effettivamente;
    entrando nel particolare, ho un testo simile a questo:

    STRINGA.DA.ESTRAPOLARE

    Non riesco proprio a trovare una regex che faccia per me, ho provato qualcosa (guardare sotto) ma non sono molto esperto nel campo e non so bene come orientarmi:

    preg_match_all('/(<a href="/giovanni" onmousedown="prova.prova.Event('PROVA', '_text_link', 'PROVISSIMA - paperino')" title="ziopaperone" rel="followed-by">(.*)\')\" title=")/i', $stringa_input,$stringa_output);



    Attendo fiducioso un vostro aiuto\consiglio!!

    Grazie,

    Stefano

  2. #2
    Mi sa che fai prima con la funzione strip_tags

    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3
    Dò per scontato che ci sia del testo prima e dopo il tag, perchè altrimenti ha ragione king size.

    Le espressioni regolari sono molto più semplici e molto più potenti di quello che sembrano, ma bisogna perderci un po' di tempo e studiarle con pazienza per imparare a usarle, perchè sono diverse da tutti gli altri linguaggi.

    Credo che la seguente espressione vada bene per te:
    <a\s[a-zA-Z0-9"'() =_+:./%&-]+>([a-zA-Z0-9 _-])*</a>

    Se non va bene c'è qualche carattere probabilmente nell'url a cui non ho pensato

  4. #4
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Io utilizzerei un pattern di questo tipo
    preg_match_all('/<a\s.*?>(.*?)<\a>/',$str,$matches);

    Se in $str hai una pagina html. in $matches[1] hai un array di tutti i testi contenuti fra i tag a mentre in matches[0] ti ritrovi un array di tutti i link in formato html
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  5. #5
    sia la mia sia la tua hanno dei difetti, più che altro non raggiungono lo scopo perchè non estrapolano l'url, che da quello che ho capito è quello che gli serve:

    (?:.*)

    in questo modo $match[1] dovrebbe contenere l'url
    se invece può contenere più di un link bisogna fare una cosa un po' più complicata

  6. #6
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Allora occorre chiamare
    Codice PHP:
    preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\\/a>/',$str,$match); 
    In questo caso, passando in $str una pagina html completa, otteniamo in $match[0] una array con il codice html di ogni link, in $match[1] un array con tutti gli url contenuti in href per ogni link e in $match[2] il testo contenuto nel tag a

    Per chi desidera testare il pattern può provare alla seguente pagina
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  7. #7
    Grazie a tutti!!!
    Analizzando tutte le idee che mi avete gentilmente fornito sono arrivato alla seguente conclusione, perfettamente funzionante:

    preg_match_all('/<a.*?href="(.*?)".*?onmousedown="(.*?)".*?>(.*?) <\/a>/', $source, $match);



    Grazie ancora a tutti,

    Stefano

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.