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

    intercettare chiusura tag e sostituire intera stringa

    Ciao a tutti, mi chiedevo se fosse possibile realizzare una cosa del genere o se è fantascienza..

    Lo scopo sarebbe di sostituire una stringa html con un'altra tramite una sola funzione.

    Pensavo a qualcosa del genere: piazzo la funzione che calcola il tutto all'inizio di un tag, con preg_match intercetto la chiusura </div>, calcolo quindi la lunghezza della stringa e con substr_replace sostituisco l'intera stringa con un'altra.. esempio:

    <?php calcola(); ?><div>Lorem ipsum dolor sit amet</div>

    Mi rendo conto che per funzionare, il div in oggetto deve appartenere ad una variabile PHP, ma mi chiedevo se fosse possibile in qualche modo operare in questo modo.. magari sfruttando anche il DOM..

    Ora come ora uso una soluzione "macchinosa", ma volevo semplificare le operazioni scrivendo una sola funzione all'inizio del tag.. non uccidetemi Grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Lo puoi fare sia con php che con js. Con js secondo me è più facile.

    codice HTML:
    <script>
    function xxx() {
     document.getElementById("uno_id").innerHTML = 'caio';
    }
    </script>
    
    <div id="uno_id">pippo</div>
    Poi richiami xxx.
    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

  3. #3
    Grazie Badaze sarebbe un ottima soluzione, ma c'è modo di farlo in php? mi servirà per sostituire anche i tag <script>...

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Dovresti essere più specifico e spiegare cosa vuoi di preciso per vedere se la soluzione php fa per te.
    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

  5. #5
    a condizione if verificata, devo sostituire specifici <div>, <script>, <iframe>, <embed>, ecc col "niente" (" "). Per definire i tag su cui operare, metterò appunto dei "selettori" al loro inizio.. Al momento ho risolto così:

    codice:
    <?php if (condizione == true) { ?>
    
    <script> ..... </script>
    
    <?php } ?>
    
    ...
    
    <?php if (condizione == true) { ?>
    
    <iframe> ..... </iframe>
    
    <?php } ?>
    ma è macchinoso e vorrei poterlo fare con un unica funzione, anche per una pulizia del codice..

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Non so se è veramente quello che cerchi. Dal codice che hai postato si intuisce che stai creando codice html mentre quello che propongo si basa su codice html già generato.

    file : test445.php
    Codice PHP:
    <?php
    function replace_tag($inputText,$tagToReplace,$textToReplace) {
      
    $pattern "/(<\s*$tagToReplace\s*([^>]*)\s*>(.*?)<\/\s*$tagToReplace\s*>)/si";
     
    $text    preg_replace($pattern,$textToReplace,$inputText);
     return 
    $text;
    // function replace_tag($tag,$textToReplace)
    //==== Prendo il contenuto del codice html della pagina test445b.html
    $contenuto file_get_contents("test445b.html");
    $contenuto replace_tag($contenuto,"div","rimpiazzato");
    print 
    $contenuto;
    ?>
    file : test445b.html (visualizza la pagina prima per poi vedere cosa succede utilizzando test445.php)
    codice HTML:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function pippo() {
     alert("a");
    } // function pippo()
    //-->
    </script>
    </head>
    <body>
    <p>Inizio</p>
    <div>
    Lorem ipsum et caetera..
    </div>
    <div>
    ..et caetera
    </div>
    <p>Fine</p>
    </body>
    </html>
    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
    Ho provato, ma non mi rimuove lo <script>

    Mi chiedevo: siccome uso questo codice per "abilitare" i tag <script>...

    codice:
    <?php if (condizione == true) { ?>
    
    <script> ..... </script>
    
    <?php } ?>
    ...esiste un modo per wrappare il codice in automatico? in alternativa esiste un modo per "spezzare" una condizione come segue?

    codice:
    <?php
    
    function uno()
    {
    ' if (condizione == true) { ';
    }
    
    function due()
    {
    ' } ';
    }
    
    
    <?php uno(); ?>
    
    <script> ..... </script>
    
    <?php due(); ?>
    Insomma, se esiste un modo con php che mi permette di disabilitare tutti gli <script> che si trovano all'interno di <body></body>, risolvo tutto

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Normale che non rimuova <script> (non ci avevo pensato facendo la regexp).
    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
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Cosi dovrebbe andare meglio.

    file : test445.php
    Codice PHP:
    <?php
    function replace_tag($inputText,$tagToReplace,$textToReplace) {
      
    $pattern "/(<\s*$tagToReplace\s*([^>]*)\s*>(.*?)<\/\s*$tagToReplace\s*>)/si";
     
    $text    preg_replace($pattern,$textToReplace,$inputText);
     return 
    $text;
    // function replace_tag($tag,$textToReplace)

    function replaceScript($inputText,$textToReplace) {
      
    $pattern1 "/(<\s*script\s*([^>]*)\s*>)/si";
      
    $pattern2 "/(<\/\s*script\s*>)/si";
     
     
    $replace1 "AAAAAAAAAABBBBBBBBBBZZZZZZZZZRRRRRRRRR000000000";
     
    $replace2 "000000000RRRRRRRRRZZZZZZZZZBBBBBBBBBBAAAAAAAAAA";
     
     
    $text     preg_replace($pattern1,$replace1,$inputText);
     
    $text     preg_replace($pattern2,$replace2,$text); 
     
     
    $pattern3 "/$replace1(.*?)$replace2/si";
     
    $text     preg_replace($pattern3,$textToReplace,$text); 
     
     return 
    $text;
    // function replaceScript($inputText,$textToReplace)

    //==== Prendo il contenuto del codice html della pagina test445b.html
    $contenuto file_get_contents("test445b.html");
    $contenuto replace_tag($contenuto,"div","rimpiazzato");
    $contenuto replaceScript($contenuto,"<!-- RIMPIAZZATO -->");
    print 
    $contenuto;
    ?>
    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

  10. #10
    Grazie! PS. c'è modo di eseguire il tutto senza sfruttare una pagina parallela? cioè supponendo che entrambe le pagine abbiano estensione php ed entrando nella pagina principale e ritrovarsi con il codice senza gli <script>..

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 © 2024 vBulletin Solutions, Inc. All rights reserved.