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

    problema con la strpos su stringa presa da file!!

    Salve a tutti, ho quersto problema, tramite la file_get_contents ho preso il contenuto di una pagina web html, all'interno mi serve recuperare tramite uno script php un certo link, ho passato tutto il contenuto su un file,e sostituito sia i doppi apici che gli spazi in | e _, tutto il contenuto poi l'ho riversato in una stringa(che chiamo $str),adesso quando cerco tramite la funzione strpos ($str, 'www') la stringa www ottengo la posizione, quindi poi per liberarmi di testo inutile,faccio così substr ($str,strpos ($str, 'www'),strlen($str)).... ok il problema nasce quando vado a cercare la fine del link contenuto nel testo, così:
    $fine_link = strpos($str,'>') che sarebbe link.htm">
    e poi faccio così:
    echo ($str,strpos ($str, 'www'),$fine_link);
    non hottengo questo www.aaaaaa.dd"> ma almeno altri 20 caratteri successsivi.. o a volte se vario di qualhe posizione manualmente ottendo altre posizioni, com'è possibile dov'è il problema?Sembra non controllabile la posizione carattere per carattere,come mai??
    grazie

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Questo è un caso da espressione regolare.

    Ad esempio, se prendi il tuo $str=file_get_contents($file); e poi fai
    Codice PHP:
    preg_match_all('/<a\s.*?href="(?:http:\/\/|https:\/\/)?([url]www.*?[/url])"/i',$str,$matches); 
    ti trovi in $matches[1] un array del tipo
    Codice PHP:
    [1] => Array
            (
                [
    0] => "www.pubblicaamministrazione.net"
                
    [1] => "www.digital.it"
                
    [2] => "www.gamesnation.it"
                
    [3] => "www.facebook.com/HTML.it"
                
    [4] => "www.freehtml.it"
                
    [5] => "www.newsletter.it"
                
    [6] => "www.oneblog.it"
                
    [7] => "www.oneadsl.it"
                
    [8] => "www.oneapple.it"
                
    [9] => "www.oneauto.it"
                
    [10] => "www.onecalcio.it"
                
    [11] => "www.onecinema.it"
                
    [12] => "www.onedigital.it"
                
    [13] => "www.onegames.it"
                
    [14] => "www.onegreentech.it"
                
    [15] => "www.onehardware.it"
                
    [16] => "www.onehome.it"
                
    [17] => "www.oneitoffice.it"
                
    [18] => "www.oneitsecurity.it"
                
    [19] => "www.oneluxury.it"
                
    [20] => "www.onemobile.it"
                
    [21] => "www.oneopensource.it"
                
    [22] => "www.onetivu.it"
                
    [23] => "www.oneweb20.it"
                
    [24] => "www.onewindows.it"
                
    [25] => "www.onewoman.it"
                
    [26] => "www.aaaaaa.dd"
                
    [27] => "www.gruppohtml.it/"
                
    [28] => "www.tagadvertising.it/Default.aspx"
                
    [29] => "www.html.it/info/job.php"
                
    [30] => "www.html.it/info/contatti.php"
                
    [31] => "www.html.it/info/note-legali.php"
            

    Questo l'ho ottenuto testando la regexp sulla pagina contenente il tuo post.

    Ciao
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    Ciao ho provato la regex come mi hai suggerito:
    preg_match_all('/www.*?)"/i',$str,$matches);
    ma non và,mi dà errore sulla riga, ecco l'errore:
    Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '/' in /web/htdocs/www.pescasport2000.it/home/cultura_lavoro/prova_mail_interceptor/index.php on line 6

    Io non ne sò niente di regex, cosa pensi sia successo?
    grazie

  4. #4
    ciao ho messo le regex:
    preg_match_all('/www.*?)"/i',$str,$matches);
    però mi restituisce errore sulla riga,ecco l'errore:
    Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '/' in /web/htdocs/www.pescasport2000.it/home/cultura_lavoro/prova_mail_interceptor/index.php on line 6

    cosa pensi che sia?

  5. #5
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Il forum si mangia gli slash e aggiunge elementi indesiderati il pattern è

    '/<a\s.*?href="(?:http:\/\/|https:\/\/)?(www.*?)"/i'
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  6. #6
    Ciao scusa prima ho risposto 2 volte pensavo la prima non fosse andata
    Comunque mentre ero in cerca di soluzioni mi sono inbattuto in questa regez che fà quello che voglio e forse è uguale alla tua:
    preg_match("/(www)\.([^[:blank:]]+)/i", $content_page, $risultato);
    Và bene però sono curioso di sapere cosa cambia tra le 2
    Grazie mille per avermi indicato la strada

  7. #7
    Quì sicuramente saprai di nuovo aiutarmi,devo prelevare solo il testo prova(che nella pagina reale è dinamico)sempre contenuto in una variabile che deriva dalla file_get_contents, e con la strpos non mi trovo nemmeno stavolta:

    <p class="aaa">
    Testo prova
    </p>


    urge una regex anche in questi casi? Perchè con la strpos ottengo la variabile($inizio) che ha la posizione del contenuto ="aaa",e il problema nasce quando,ponendo una variabile $fine(che sarebbe la $inizio auentata di un certo quantitattivo per far includere in una substr il testo che mi interessa) per catturare il testo prova, non mi trovo mai... Spero di essere stato abbastanza chiaro,se no riscrivo tutto meglio..
    Grazie ancora

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.