Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Cercare due valori in una stringa

    e scusate per la richiesta.
    In un file ho queste righe di codice che mi crea dei link (scusate la lunghezza delle righe):
    Codice PHP:
    echo "[*]<a" . (($choice == "link") ?  " class='currentN'" "") . " href=\"link.php?settore=lab_php&amp;choice=link&amp;pref=lin\">link</a>\n"
    echo 
    "[*]<a" . (($choice == "php_to_pdf") ?  " class='currentN'" "") . " href=\"php_to_pdf.php?settore=lab_php&amp;choice=php_to_pdf&amp;pref=pdf\">da PHP a PDF</a>\n";  
    echo 
    "[*]<a" . (($choice == "show_hide") ?  " class='currentN'" "") . " href=\"show_hide.php?settore=lab_php&amp;choice=show_hide&amp;pref=pdf\">PHP-js Show/Hide</a>\n"
    echo 
    "[*]<a" . (($choice == "varie") ?  " class='currentN'" "") . " href=\"varie.php?settore=lab_php&amp;choice=varie&amp;pref=var\">Varie</a>\n"
    Ora, in altro file, una volta stabilito un prefisso ($pref = "lin" ), tra le righe dell'altro file debbo trovare quella che ha un prefisso uguale a quello da me stabilito ed estrarre il valore abbinato a choice (choice=link) quindi link (in questo esempio corrisponde alla prima delle righe qui sopra)
    Ho provato ad usare un semplice pattern, ma non riesco ad estrarre il valore che mi serve, vien fuori solo una stringa vuota
    Codice PHP:
    $pattern_find "(pref=(.*?)>)";
    preg_match($pattern$lines[$b], $result_1);
    echo 
    "'" $result_1[1] . "'<hr />\n"
    Dopo di questo, se trovo $pref dovrei estrarre il valore abbinato a choice

    Grazie per l'aiuto che mi darete

  2. #2
    scusate se mi ripropongo.........un aiutino?

  3. #3
    Originariamente inviato da micdas
    scusate se mi ripropongo.........un aiutino?
    prova a fare un esempio pratico perche non so se ho capito bene! scusami ma sono stanco :-)
    vedo se posso aiutarti...

  4. #4
    ciao LuigiMem e grazie per la risposta.
    Replico con altre parole il mio intento......forse non sono stato abbastanza chiaro.
    Ho un file (menù.php che mi stampa dei link comprensivi di query-string strutturato in questa maniera
    Riporto il file integrale
    Codice PHP:
    <ul class="menuNav">[*]<h3>contenuti PHP</h3>
    <?php
    $choice 
    $_REQUEST['choice'];
    echo 
    "[*]<a" . (($choice == "introduzione") ?  " class='currentN'" "") . " href=\"introduzione.php?settore=lab_php&amp;choice=introduzione\">Introduzione</a>\n";
    echo 
    "[*]<a" . (($choice == "el_funz") ?  " class='currentN'" "") . " href=\"el_funz.php?settore=lab_php&amp;choice=el_funz\">Elenco risorse</a>\n";
    echo 
    "[*]<a" . (($choice == "funzioni_pers") ?  " class='currentN'" "") . " href=\"funzioni_pers.php?settore=lab_php&amp;choice=funzioni_pers&amp;pref=fun\">Funzioni</a>\n";
    echo 
    "[*]<a" . (($choice == "stringhe") ?  " class='currentN'" "") . " href=\"stringhe.php?settore=lab_php&amp;choice=stringhe&amp;pref=str\">stringhe</a>\n";
    echo 
    "[*]<a" . (($choice == "numeri") ?  " class='currentN'" "") . " href=\"numeri.php?settore=lab_php&amp;choice=numeri&amp;pref=num\">numeri</a>\n";
    echo 
    "[*]<a" . (($choice == "cicli") ?  " class='currentN'" "") . " href=\"cicli.php?settore=lab_php&amp;choice=cicli&amp;pref=cic\">Strutture controllo - cicli</a>\n";
    echo 
    "[*]<a" . (($choice == "matrici_array") ?  " class='currentN'" "") . " href=\"matrici_array.php?settore=lab_php&amp;choice=matrici_array&amp;pref=arr\">Array o Matrici</a>\n";
    echo 
    "[*]<a" . (($choice == "gestione_files") ?  " class='currentN'" "") . " href=\"gest_files.php?settore=lab_php&amp;choice=gestione_files&amp;pref=fil\">gestione files</a>\n";
    echo 
    "[*]<a" . (($choice == "gest_data") ?  " class='currentN'" "") . " href=\"gest_data.php?settore=lab_php&amp;choice=gest_data&amp;pref=dat\">gestione date orari</a>\n";
    echo 
    "[*]<a" . (($choice == "link") ?  " class='currentN'" "") . " href=\"link.php?settore=lab_php&amp;choice=link&amp;pref=lin\">link</a>\n";
    echo 
    "[*]<a" . (($choice == "php_to_pdf") ?  " class='currentN'" "") . " href=\"create_pdf_to_php.php?settore=lab_php&amp;choice=php_to_pdf&amp;pref=pdf\">da PHP a PDF</a>\n";
    echo 
    "[*]<a" . (($choice == "show_hide") ?  " class='currentN'" "") . " href=\"show_hide.php?settore=lab_php&amp;choice=show_hide&amp;pref=ide\">PHP-js Show/Hide</a>\n";
    echo 
    "[*]<a" . (($choice == "varie") ?  " class='currentN'" "") . " href=\"varie.php?settore=lab_php&amp;choice=varie&amp;pref=var\">Varie</a>\n";
    ?>[/list]
    I files da leggere hanno tutti un prefisso di 3 lettere differente da ciascun argomento (quelli indicati nel menù).
    In altro file, tra le varie righe lette nel file, debbo leggere il prefisso abbinato a ciascun link per ricavarne il relativo choise. Uso questo codice:
    Codice PHP:
    <?php
    $lines 
    file("menu.php");
    $elenco_files glob('???_*.php');
    $pattern_pref "(pref=(.*?)> )";
    $pattern_choise "(choice=(.*?)> )";
    for (
    $i 0$i count ($elenco_files); $i++) {
        
    $parts explode('_'$elenco_files[$i], 2);
        
    $pref_find $parts[0];
        echo 
    $pref_find "
    \n"
    ;
        
    $filename $elenco_files[$i];
        
    $current file_get_contents($filename);    
        for(
    $b=0$b count($lines); $b++) {
            
    preg_match($pattern_pref$lines[$b], $result_1);
            
    $pref $result_1[1];
            if (
    $pref == $pref_find) {
                
    preg_match($pattern_choise$lines[$b], $result_2);
                
    $choise $result_2[1];
                echo 
    $pref_find " - " $pref " - " $choice "
    \n"
    ;
            }
        }
    }
    ?>
    In questo il $pref_find mi viene letto regolarmente, ma non mi viene restituito il $pref restituito da preg_match().
    Io penso che siano errati sia il $pattern_pref che il $pattern_choise.

  5. #5
    Mi spiace insistere, ma non riesco proprio a risolvere

    Grazie

  6. #6
    Originariamente inviato da micdas
    ciao LuigiMem e grazie per la risposta.
    Replico con altre parole il mio intento......forse non sono stato abbastanza chiaro.
    Ho un file (menù.php che mi stampa dei link comprensivi di query-string strutturato in questa maniera
    Riporto il file integrale
    Codice PHP:
    <ul class="menuNav">[*]<h3>contenuti PHP</h3>
    <?php
    $choice 
    $_REQUEST['choice'];
    echo 
    "[*]<a" . (($choice == "introduzione") ?  " class='currentN'" "") . " href=\"introduzione.php?settore=lab_php&amp;choice=introduzione\">Introduzione</a>\n";
    echo 
    "[*]<a" . (($choice == "el_funz") ?  " class='currentN'" "") . " href=\"el_funz.php?settore=lab_php&amp;choice=el_funz\">Elenco risorse</a>\n";
    echo 
    "[*]<a" . (($choice == "funzioni_pers") ?  " class='currentN'" "") . " href=\"funzioni_pers.php?settore=lab_php&amp;choice=funzioni_pers&amp;pref=fun\">Funzioni</a>\n";
    echo 
    "[*]<a" . (($choice == "stringhe") ?  " class='currentN'" "") . " href=\"stringhe.php?settore=lab_php&amp;choice=stringhe&amp;pref=str\">stringhe</a>\n";
    echo 
    "[*]<a" . (($choice == "numeri") ?  " class='currentN'" "") . " href=\"numeri.php?settore=lab_php&amp;choice=numeri&amp;pref=num\">numeri</a>\n";
    echo 
    "[*]<a" . (($choice == "cicli") ?  " class='currentN'" "") . " href=\"cicli.php?settore=lab_php&amp;choice=cicli&amp;pref=cic\">Strutture controllo - cicli</a>\n";
    echo 
    "[*]<a" . (($choice == "matrici_array") ?  " class='currentN'" "") . " href=\"matrici_array.php?settore=lab_php&amp;choice=matrici_array&amp;pref=arr\">Array o Matrici</a>\n";
    echo 
    "[*]<a" . (($choice == "gestione_files") ?  " class='currentN'" "") . " href=\"gest_files.php?settore=lab_php&amp;choice=gestione_files&amp;pref=fil\">gestione files</a>\n";
    echo 
    "[*]<a" . (($choice == "gest_data") ?  " class='currentN'" "") . " href=\"gest_data.php?settore=lab_php&amp;choice=gest_data&amp;pref=dat\">gestione date orari</a>\n";
    echo 
    "[*]<a" . (($choice == "link") ?  " class='currentN'" "") . " href=\"link.php?settore=lab_php&amp;choice=link&amp;pref=lin\">link</a>\n";
    echo 
    "[*]<a" . (($choice == "php_to_pdf") ?  " class='currentN'" "") . " href=\"create_pdf_to_php.php?settore=lab_php&amp;choice=php_to_pdf&amp;pref=pdf\">da PHP a PDF</a>\n";
    echo 
    "[*]<a" . (($choice == "show_hide") ?  " class='currentN'" "") . " href=\"show_hide.php?settore=lab_php&amp;choice=show_hide&amp;pref=ide\">PHP-js Show/Hide</a>\n";
    echo 
    "[*]<a" . (($choice == "varie") ?  " class='currentN'" "") . " href=\"varie.php?settore=lab_php&amp;choice=varie&amp;pref=var\">Varie</a>\n";
    ?>[/list]
    I files da leggere hanno tutti un prefisso di 3 lettere differente da ciascun argomento (quelli indicati nel menù).
    In altro file, tra le varie righe lette nel file, debbo leggere il prefisso abbinato a ciascun link per ricavarne il relativo choise. Uso questo codice:
    Codice PHP:
    <?php
    $lines 
    file("menu.php");
    $elenco_files glob('???_*.php');
    $pattern_pref "(pref=(.*?)> )";
    $pattern_choise "(choice=(.*?)> )";
    for (
    $i 0$i count ($elenco_files); $i++) {
        
    $parts explode('_'$elenco_files[$i], 2);
        
    $pref_find $parts[0];
        echo 
    $pref_find "
    \n"
    ;
        
    $filename $elenco_files[$i];
        
    $current file_get_contents($filename);    
        for(
    $b=0$b count($lines); $b++) {
            
    preg_match($pattern_pref$lines[$b], $result_1);
            
    $pref $result_1[1];
            if (
    $pref == $pref_find) {
                
    preg_match($pattern_choise$lines[$b], $result_2);
                
    $choise $result_2[1];
                echo 
    $pref_find " - " $pref " - " $choice "
    \n"
    ;
            }
        }
    }
    ?>
    In questo il $pref_find mi viene letto regolarmente, ma non mi viene restituito il $pref restituito da preg_match().
    Io penso che siano errati sia il $pattern_pref che il $pattern_choise.


    Ciao mi spiace non averti risposto prima!

    apparte il fatto che devi recuperare il valore che è l'unica cosa capito!

    riesci a farmi un esempio descrittivo di ciò che vorresti?
    perchè il codice che mi hai inviato lo trovo un po confuso.

    recuperi i file nella root per poi leggerli come se fossero stringhe uno a uno per poi spezzettarli e recuperare il valore? scusami ma probabilmente non riesco a entrare nella logica del problema.

    fammi sapere
    ciao

  7. #7
    Originariamente inviato da LuigiMem
    Ciao mi spiace non averti risposto prima!
    io ho guardato il tuo codice e lo testato online a me non mostra nemmeno $pref_find

    al dilà di questo non mi è ancora chiaro il problema:

    Fammi capire bene.. Da una parte hai il menù che mi hai indicato
    dall'altra hai un file che legge questo menù e vuoi ricavare il valore di "$choice"?
    se è cosi in base a quale evento? al click di un link nel menù?

    mi devi perdonare ma non ho ben capito la logica che devo seguire!
    riesci a farmi un esempio descrittivo di ciò che vorresti?

    ciao
    Ciao LuigiMem e grazie della risposta
    Dunque.
    No, nessun evento.
    Il file del menù è così come l'ho postato e nel sito viene incluso nelle pagine dove serve e funziona correttamente.

    Il lavoro che sto facendo è in una pagina amministrativa dove vorrei controllare la correttezza e la corrispondenza di tutti i files
    Leggo il file del menù con $lines = file("menu.php");

    Il $pref_find mi viene restituito dalla lettura dei files che sono in una cartella.
    $elenco_files = glob('???_*.php');
    Questi files hanno dei prefissi tipo "pop_popup.php", "fil_lettura_file.php", ecc
    Una volta letti i files che hanno questi prefissi estraggo il prefisso con un semplice explode che come primo elemento mi da il prefisso $pref_find = $parts[0];

    Una volta che ho il prefisso comincio a leggere le $lines estratte da menu.php
    E' a questo punto che nasce il problema
    dovrei leggere ogni $lines[$b] alla ricerca del $pref_find
    Se trovo il $pref_find debbo estrarre il valore della $choise.

    Volevo agire con una espressione regolare di questo tipo
    $pattern_pref = "(pref=(.*?)> )";
    $pattern_choise = "(choice=(.*?)> )";

    Ma sicuramente sbaglio qualcosa nella sua creazione.

    Spero di essere stato più chiaro.
    Se può aiutare meglio questa è la pagina su cui sto lavorando

    Grazie di nuovo

  8. #8
    Ciao Micdas, ora sono in ufficio e non ho molto tempo
    ho dato un occhiata veloce adesso è tutto molto più chiaro (credo)

    ti mando questo codice da provare e che devo riguardare bene con calma
    provalo magari puo già aiutarti!

    $lines = file("menu.php");
    $elenco_files = glob('???_*.php');
    $pattern_pref = "(pref=(.*?)> )";
    $pattern_title = "(<title>(.*?)</title>)";

    for ($i = 0; $i < count ($elenco_files); $i++) {
    $parts = explode('_', $elenco_files[$i], 2);
    $pref_find = $parts[0];
    echo "Prefisso: " . $pref_find . "
    \n";
    $filename = $elenco_files[$i];
    $current = file_get_contents($filename);

    for($b=0; $b < count($lines); $b++) {

    $choice_find = eregi("&choice=(.+)&pref", $lines[$b], $choice);
    $settore_find = eregi("settore=(.+)&choice", $lines[$b], $settore);

    echo "<span class=\"brown\">Per " . $filename . "</span>:
    \n";
    echo $cur_line . "
    \n";
    echo "Pref: " . $pref . "
    \n";
    echo "Title: " . $title_find . "
    \n";
    echo "choice: " . $choice[1] . "
    \n";
    echo "settore: " . $settore[1] . "
    \n";
    echo "<hr />\n";



    }

    }

    dimmi se cominci a vedere qualcosa?
    più tardi mi ricollego
    ciao

  9. #9
    Ciao LuigiMem
    ho provato quel che mi hai suggerito...........
    A parte che se ottengo qualche risultato debbo mettere qualche break nel ciclo, ho subito testato il tuo suggerimento ma ancora non ottengo nulla.
    Puoi vedere a questo link dove ho commentato il mio vecchio codice ed ho inserito quello da te suggerito

    sono disperato

  10. #10
    Ciao micdas, non disperarti...
    adesso non posso lavorarci perchè ho il capo in ufficio :-)

    ti ho chiesto di fare un prova con quel codice perchè a me qualche risultato lo aveva dato
    ma l'ho guardato molto velocemente

    dai un occhiata qui dove ho appoggiato la prova:

    http://luigisentina.com/testmenu.php

    io ho solo 2 file "vuoti" nella root
    e il ciclo va sistemato però i dati escono!

    stasera riesco a guardaro e ti do la soluzione!

    ciao

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.