Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: espressione regolare

  1. #1

    espressione regolare

    ho quasi risolto il mio template engine...

    ho un problema con questa riga

    Codice PHP:
    $template_complete preg_replace("(.*?)"$return_php$template_complete); 
    $template_complete è il risultato finale di tutto il template elaborato da mandare a video con print
    $key = è una chiave che utilizzo per gestire più split in uno stesso template
    $return_php è il codice che ho prelevato dal template che ho precedentemente elaborato... (cicli di query)

    e deve fare questa semplice operazione...
    deve prendere tutto il testo che è compreso tra e e sostituirlo con il codice che ho elaborato in precedenza... memorizzarlo in una variabile e basta...

    ho fatto alcune prove, ma l'errore che mi ha bloccato lo sviluppo è:

    codice:
    Warning: preg_replace(): Unknown modifier '(' in d:\www\class_template.php on line 65
    credo che non gli vada giù il (.*?) ma non capisco il perchè e come poterlo risolvere...

    grazie

  2. #2
    Da quello che so l'epressione regolare con preg deve essere tra "/ qui /" per prima cosa. Seconda cosa (.*?) mi sembra di ricordare che non supporta le righe multiple. Il . corrisponde a qualsiasi carattere escluso il carattere a capo
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  3. #3
    e una funzione simile, ma che supporti l'accapo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    c'è un'impostazione da mettere, non mi ricordo quale, guarda sul manuale PHP
    *********************************
    Andrea
    *********************************

  5. #5
    devo inserire il modificatore m...

    m (PCRE_MULTILINE)
    Per default, PCRE tratta il testo su cui fare la ricerca come una "singola linea" di caratteri (anche se in realtà può contenere diversi "a capo" (newline)). Il carattere di "inizio riga" (^) indica solamente l'inizio del testo passato. Analogamente il carattere di "fine riga" ($) indica la fine del testo o prima se vi sono dei caratteri di "a capo" (a meno che non sia attivato il modificatore D). In questo modo si comporta anche Perl.

    Invece quando viene indicato questo modificatore, "inizio riga" e "fine riga" vengono identificati in base ai caratteri di "a capo" presenti nel testo (rispettivamente subito dopo e subito prima di questo carattere). Questo comportamento è equivalente al modificatore /m di Perl. Se nel testo passato non vi sono caratteri di "a capo" o non vi sono occorrenze dei caratteri ^ o $ nell'espressione regolare, l'uso di questo modificatore non ha effetto.
    come correggo la stringa di ricerca? non so dove mettere le mani...

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    prova cosi

    $template_complete = preg_replace("|(.*?)|m", $return_php, $template_complete);
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    non stampa nulla... ma non da errori

    però forse da problemi il (.*?) ho provato a togliere il . ma mi da errore...

    codice:
    Warning: preg_replace(): Compilation failed: nothing to repeat at offset 20 in d:\www\class_template.php on line 64

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova cosi

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <?php 
    ob_start();
    readfile("test3017c.php");
    $template_complete = ob_get_contents();
    ob_end_clean();
    //
    $return_php = "pippo";
    $key = 'a';
    $pattern = "|(.*)|sU";
    print "$pattern
    ";
    print preg_replace("$pattern", $return_php, $template_complete);
    ?>
    </body>
    </html>
    File test3017c.php
    codice:
    pppppppppppppppppppppppppp
    
    
    
    pppppppppppppppppppppppppp
    
    
    
    pppppppppppppppppppppppppp
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    il problema che il codice html della intera pagina non è nel file php ma in un file .tpl

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da neohack
    il problema che il codice html della intera pagina non è nel file php ma in un file .tpl
    E che c'entra ?????

    Il mio é solo un esempio.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.