Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Perchè non funziona?

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    35

    Perchè non funziona?

    Provo a postare qualche frammento di codice e vediamo se mi riuscite ad aiutare. Sono disperato.

    Codice PHP:
    $pattern '/< *frame [^>]+>/';  
    preg_match_all($pattern$Content$matches);

    ...

    foreach (
    $matches[0] as $name)  {       
        echo 
    strlen($name); 
        echo 
    $name
    Allora ottengo a video la lunghezza della stringa ricercata con preg_match_all che è appunto 86 ma se poi vado a stampare la stringa non mostra nulla.
    Perche?

    idee?

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    vedi cosa c'è dentro $matches e capirai :-)

    print_r($matches);


  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    35
    Ecco cosa stampa:

    Array ( [0] => Array ( [0] => [1] => ) )

    La cosa che mi da fastidio è che poi se uso $name come una stringa e ci faccio operazioni, funzionana tutto bene e dentro ha la stringa che effettivamente dovrebbe esserci.

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    La regex trova l'occorrenza, ma se non metti tra parentesi tonde quello che vuoi catturare l'array $matches sarà vuoto. La tua regex dovrebbe essere una cosa del genere (dipende da cosa vuoi catturare):

    codice:
    /< *frame ([^>]+)>/
    ciao

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    <frame src="testa.htm" name="navbar" scrolling="no" marginwidth="0" margingheight="O">
    <frame src="pippo.htm" title="pippo">
    <frame src="pluto.php">
    Non hai detto cosa vuoi catturare:

    Tutto quello che c'è nel tag?

    allora la regex dovrà essere qualcosa del genere:

    codice:
    /(\<frame[^\>]+\>)/
    e il tuo matches verrà riempito cosi:

    codice:
    Array
    (
        [0] => Array
            (
                [0] => <frame src="testa.htm" name="navbar" scrolling="no" marginwidth="0" margingheight="O">
                [1] => <frame src="pippo.htm" title="pippo">
                [2] => <frame src="pluto.php">
            )
    
        [1] => Array
            (
                [0] => <frame src="testa.htm" name="navbar" scrolling="no" marginwidth="0" margingheight="O">
                [1] => <frame src="pippo.htm" title="pippo">
                [2] => <frame src="pluto.php">
            )
    
    )
    Ciao

    edit:

    occhio che se stampi matches con print_r nella pagina web non vedrai il risultato perchè vengono interpretati i tag, se vuoi vedere il risultato reale usa questo codice:

    codice:
    echo "<pre>";
    echo htmlentities(print_r($matches, true));
    echo "</pre>";

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    35
    Sicuro dell'espressione:

    /(\<frame[^\>]+\> )/

    perchè a me non trova nulla.
    Sto provando a studiare ste espressioni regolari ma son proprio un casino.

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    c'è uno spazio di troppo tra > e la parentesi tonda di chiusura.

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    35
    Che tu sia lodato. Risolto il problema.

    GP

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.