Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144

    Problema con "preg_match_all"

    Salve ragazzi,
    ho un problema con la funzione in oggetto preg_match_all, ecco il pezzo di codice:

    Codice PHP:

    preg_match_all
    ("(

    (.*?)</p>)"
    $pagina_web $risultato);
    foreach (
    $risultato[1] as $value) {
      echo 
    $value."
    "
    ;

    A video non stampa i paragrafi più lunghi di un tot di caratteri.
    E' una limitazione di preg_match_all oppure perchè supera i limiti della dimensione del vettore multidimensionale che utilizzo??

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    ciao,

    la struttura dell'array $risultato qual è?
    Jekkil

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Prova
    Codice PHP:
    foreach($risultato as $value)
        echo 
    $value[0]; 

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144
    Originariamente inviato da Jekkil
    ciao,

    la struttura dell'array $risultato qual è?
    Lo script l'ho preso da qui (e relativa spiegazione di $risultato):
    http://www.danieletabacco.com/43/art...-regolari.html


    Originariamente inviato da Alhazred
    Prova
    Codice PHP:
    foreach($risultato as $value)
        echo 
    $value[0]; 
    Non funziona...

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Codice PHP:
    echo "<pre>";
    print_r($risultato);
    echo 
    "</pre>"
    cosa viene fuori?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144
    Originariamente inviato da Alhazred
    Codice PHP:
    echo "<pre>";
    print_r($risultato);
    echo 
    "</pre>"
    cosa viene fuori?
    codice:
    Array
    (
        [0] => Array
            (
                [0] => 
    Track Tool
    
    
                [1] => 
    Description of general usage:
    
    
                [2] => 
    Stop:  Stop playback.
    
    
                [3] => 
    Keyboard Shortcuts
    
    
                [4] => 
    Command-line Parameters
    
    
            )
    
        [1] => Array
            (
                [0] => >Track Tool
                [1] => >Description of general usage:
                [2] => >Stop:  Stop playback.
                [3] => >Keyboard Shortcuts
                [4] => >Command-line Parameters
            )
    
    )
    Tira fuori le stesse cose...cioè i testi più lunghi di quelle frasi non le considera...

  7. #7
    Hai provato a togliere lo spazio prima della chiusura della parentesi tonda?

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    144
    Si, in realtà non c'è lo spazio nel codice originale...

    Qui sotto c'è il testo html che è contenuto nella variabile $pagina_web, in grassetto le parti di testo tra tag

    che la funzione preg_match_all() riesce a tirar fuori, mentre le altre non le considera...

    codice:
    
    
    Track Tool</p> 
    
    
    
    This utilities main purpose is 
    to quickly establish intro times and/or cue and segue positions of individual songs 
    by listening to them, or by scanning the files with volume settings.. It may 
    also be used to view basic track information such as Artist, Title, Album and CD 
    Code in columns which may be sorted. The information may be changed using
    Track Properties.</p>
    
    
    
    The Track Tool may be loaded from Studio, 
    Creator, the StationPlaylist Start menu, and the Windows Explorer context 
    popup menu. Files may be dragged and dropped from Windows 
    Explorer into the track list.</p>
    
    
    
    Note: When loading the Track Tool from 
    Creator or Studio, the player controls will be disabled when the
    Preview Player option is disabled.</p>
    
    
    
    Keyboard shortcuts are listed 
    near the bottom of this page.</p>
    
    
    
    Description of general usage:</p>
    Sarà sbagliata forse l'espressione regolare?

  9. #9
    Ora è più chiaro.
    il problema non è dato dalla lunghezza del tag ma dai caratteri acapo. infatti il metacarattere "." significa tutti i caratteri eccetto gli acapo.
    Io non sono espertissimo di espressioni regolari, ma una possibile soluzione con php potrebbe essere questa:

    Codice PHP:
    preg_match_all("(

    (.*?)</p> )"
    str_replace("\n"," ",$pagina_web) , $risultato); 
    foreach (
    $risultato[1] as $value) { 
      echo 
    $value."
    "


    Sicuramente esiste una soluzione più elegante usando direttamente le espressioni regolari...

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    In pratica ti ignora i paragrafi in cui è presente un ritorno a capo se non ho capito male.

    Edit: appunto...

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.