Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [php 4] ereg_replace()

  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [php 4] ereg_replace()

    salve,

    stavo scrivendo una function che mi commutasse il contenuto del testo che sta tra ${ e }$ in un qualcos'altro, e ho scritto questa:

    codice:
    //find-replace all'interno di una stringa
    function verify( $var, $find, $replace ) {
    	$var = ereg_replace(
    		'(.+)(\$\{)('.$find.')(\}\$)(.+)',
    		'\\0'.$replace.'\\4',
    		$var
    	);
    	return $var;
    }
    
    $testo = 'irw eroih oiwrhe oihwre ${nom}$ oihr oiehw oihe ${cog}$ ${nom';
    
    echo $testo."
    \n\n";
    
    echo verify( $testo )."
    \n\n";
    ...ma non sembra funzionare,
    qualcuno sa aiutarmi a scriverla? :master:
    わさび

  2. #2
    Scusa eh.. ma gli argomenti della tua funzione, sono tre.. Se passi solo l'argomento $var come fà a funzionare correttamente???

    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da Al_katraz984
    Scusa eh.. ma gli argomenti della tua funzione, sono tre.. Se passi solo l'argomento $var come fà a funzionare correttamente???

    Hai ragione ho postato del codice parzialmente scritto dimenticandomi di passare gli argomenti correttamente, cmq non funziona lo stesso:
    (vedi i commenti)
    codice:
    function verify( $var, $find, $replace ) {
    	$var = ereg_replace(
    		'(.+)(\$\{)('.$find.')(\}\$)(.+)',
    		'\\0'.$replace.'\\4',
    		$var
    	);
    	return $var;
    }
    
    $testo = 'irw eroih oiwrhe oihwre ${nom}$ oihr oiehw oihe ${cog}$ ${nom';
    
    echo $testo."
    \n\n";
    
    echo verify( $testo, 'nom', 'tizio caio' )."
    \n\n";
    
    // output:
    // -------------------------------------------
    // irw eroih oiwrhe oihwre ${nom}$ oihr oiehw oihe ${cog}$ ${nom
    // irw eroih oiwrhe oihwre ${nom}$ oihr oiehw oihe ${cog}$ ${nomtizio caio}$
    // -------------------------------------------
    // invece vorrei che venisse:
    // irw eroih oiwrhe oihwre tizio caio oihr oiehw oihe ${cog}$ ${nom
    tra l'altro, il contenuto tra ${ e }$ dovrebbero essere caratteri urlencode, per cui a-zA-z0-9 e altri come . _ ecc.
    ma non so come scriverla esattamente...
    わさび

  4. #4
    Per quello che devi fare non occorre utilizzare le espressioni regolari (e cmq meglio usare le preg_* invece delle ereg*, sono più potenti e veloci).
    Prova una cosa del genere:
    Codice PHP:
    $find=array(
         
    '${nom}$'
        
    ,'${cog}$'
        
    );
    $replace=array(
         
    'tizio caio'
        
    ,'sempronio'
        
    );


    $testo 'irw eroih oiwrhe oihwre ${nom}$ oihr oiehw oihe ${cog}$ ${nom';

    echo 
    $testo."
    \n\n"
    ;

    echo 
    str_replace$find,$replace,$testo )."
    \n\n"

    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  5. #5
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da Anªkin
    Per quello che devi fare non occorre utilizzare le espressioni regolari (e cmq meglio usare le preg_* invece delle ereg*, sono più potenti e veloci).
    Prova una cosa del genere:
    Codice PHP:
    $find=array(
         
    '${nom}$'
        
    ,'${cog}$'
        
    );
    $replace=array(
         
    'tizio caio'
        
    ,'sempronio'
        
    );


    $testo 'irw eroih oiwrhe oihwre ${nom}$ oihr oiehw oihe ${cog}$ ${nom';

    echo 
    $testo."
    \n\n"
    ;

    echo 
    str_replace$find,$replace,$testo )."
    \n\n"

    grazie x la risposta innanzitutto,
    lo str_replace lo conoscevo già e il motivo per cui non l'ho usato è che il fine ultimo di questa funzione sarebbe quello di fare find-replace di n variabili passate in get alla pagina:
    quindi io farei così
    Codice PHP:
    $getvars = array();
    foreach( 
    $_GET as $k => $v ) {
        if( 
    $k != 'id' && $k != 'key' ) {
            if( 
    urldecode$v ) !='' ) {
                
    $getvars[$k] = urldecode$v );
            }
        }

    dopodicchè mi servirebbe una funzione che si scandaglia una variabile che gli passo e che mi trova tutte le occorrenze di variabili comprese tra ${ e }$ e che me le sostituisca con il contenuto della variabile presa dal get...
    わさび

  6. #6
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    mi sono fatto una cosa del genere e funziona, ma mi chiedevo se fosse possibile e più veloce usare un ereg_replace()
    Codice PHP:
    function findreplace_getvars$var ) {
        global 
    $getvars;
        
    $findarr $replacearr = array();
        foreach( 
    $getvars as $k => $v ) {
            
    $findarr[] = STRFIND_PRE.$k.STRFIND_POST;
            
    $replacearr[] = $v;
        }
        return 
    str_replace$findarr$replacearr$var );
    }

    define'STRFIND_PRE''${' );
    define'STRFIND_POST''}$' ); 
    わさび

  7. #7
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Nessuno sa aiutarmi per semplificare il codice che ho scritto?
    わさび

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.