Visualizzazione risultati 1 fino 10 di 10

Discussione: aiutino ereg_replace...

  1. #1
    Guest

    Predefinito aiutino ereg_replace...

    ok, sn tornato a kiedere qlcsina
    nella mia bakeka voglio fare in modo ke prima d aggiungere il msg nel db venga controllato se c sn segni preimpostati (faccine) e convertirli in <img src.....>, il codice
    Codice PHP:
    $msg = $_POST['msg'];
    $msg2 = strip_tags($msg, '<b>,<i>,<u>,<br>'); //elimina tutti i tag html tranne qll in lista

    $f1 = '<img src="immagini/icon_smile.gif">';
    $testo1 = ereg_replace(':)', $f1, $msg2); //inizia il controllo faccine e sostituzione in img
    $f2 = '<img src="immagini/icon_smile_sad.gif">';
    $testo2 = ereg_replace(':(', $f2, $testo1);
    $f3 = '<img src="immagini/icon_smile_big.gif">';
    $testo3 = ereg_replace(':D', $f3, $testo2);
    $f5 = '<img src="immagini/icon_smile_shock.gif">';
    $testo5 = ereg_replace(':o', $f5, $testo3);
    $f6 = '<img src="immagini/icon_smile_sleepy.gif">';
    $testo = ereg_replace('^^', $f6, $testo5);
    non da errori di alcun tipo, semplicemente cm stringa finale restituisce solo l'ultima immagine presente, cm risolvo?
    e poi, un modo per nn avere troppe variabili: posso riutilizzare lo stesso nome?
    tipo $testo=ereg_replace(blablabla,$testo); oppure no?

    grazie in anticipo, se nn capite qlcs kiedete
    Ultima modifica di SFo : 12-04-2005 alle ore 20.11.32 Motivo: tolta una stringa ke veniva convertita da vbullettin ma tanto era un'immagine

  2. #2
    Guest

    Predefinito

    Quindi deduco che è una formattazione!
    Tre consigli:
    1) non fai controlli sulle lunghezze (i caratteri) delle parole
    2) ereg_replace non è il metodo migliore per formattare
    3) strip_tags non è di certo il metodo migliore per la formattazione del testo

    Una pagina così è vulnerabile al 40%

    Io ho una formattazione che esegue dei controlli e che formatta anche in maniera diversa. Se vuoi te la posto. A prima occhiata sembrerebbe complicata ma se gli dai un minuto vedrai che non è poi così tanto difficile
    Ultima modifica di nix82 : 13-04-2005 alle ore 12.15.49

  3. #3
    Guest

    Predefinito

    se puoi passarmela t ringrazio vivamente

    edit: più ke formattazione convertire combinazioni in immagini :D
    Ultima modifica di SFo : 13-04-2005 alle ore 14.44.35

  4. #4
    Guest

    Predefinito

    Ecco a te ! L'ho fatto io! Se c'è qualcosa che non è chiaro dimmi pure!
    L'ho adattato in parte al tuo caso...ho messo solo 3 codici e faccine! Basta immettere tutti i codici in array_codici e i nomi delle gif in array_faccine e il gioco è finito

    Attenzione: a un codice c'è una faccina quindi il totale degli elementi dei due array DEVE essere uguale!

    Codice:
    $array_codici=array(':(' , ':(' , ':D');
    $array_nomi=array('icon_smile.gif' ,'icon_smile_sad' ,'icon_smile_big.gif');
    
    $testo = isset($_POST['testo']) ? $_POST['testo'] : null;
    
    $testo = stripslashes(htmlspecialchars($testo));
    $testo = nl2br($testo);
    
    if($testo != null && trim($testo) != '') {
    
    $parole = explode(' ' , $testo);
    $num_faccine=0;
    $fermo=0;
    
    for($i=0 ; $i<count($parole) ; $i++) {
         for($j=0; $j<count($array_codici); $j++) {
              if(isset($array_codici[$j])) {
                   if($parole[$i] == $array_codici[$j] ) {
                        $parole[$i] = trim($parole[$i]);
                        $parole[$i] = ' <img src="immagini/'. $array_nomi[$j] .'"> ';
                        $num_faccine++;
                   }
                   if(strlen($parole[$i]) > 50) {
                        $fermo = 1;
    		    break 2;
    	       }
              }
         }
    }
    
    if(!$fermo) {
         echo $testo = implode(' ', $parole); // testo formattato alla grande
         echo $num_faccine;
    } else {
         echo "Hai inserito una parola con troppi caratteri";
    }
    
    }
    Succede che alla fine hai il tuo testo formattato e hai il numero di faccine immesse!
    Succede anche che se l'utente immette una parola con più di 50 caratteri la formattazione si perde e non succede niente!
    Si potrebbe, anzi si dovrebbe continuare con la verifica, ma credo che così può bastare

  5. #5
    Guest

    Predefinito

    Mi sono dimenticato di dirti che non ho potuto provare lo script!
    Se ti da qualche errore posta pure che vediamo di risolvere il tutto...

  6. #6
    Guest

    Predefinito

    sure, grazie nix ora lo collaudo e t faccio sapere

  7. #7
    L'avatar di marcio
    marcio non è connesso AlterGuru 2500
    Data registrazione
    17-08-2003
    Residenza
    Palermo
    Messaggi
    3,300

    Predefinito

    per le faccine usa $testo = str_replace(":)","<img src=..",$testo);

    per il controllo dei tag ti basta che non vengano stampati caratteri malevoli tipo < e > e che vengano convertiti nei corrispettivi in html,per farlo usa la funzione $testo = htmlentities($testo);

    cmq si,puoi scrivere sempre $testo e non $testo1,$testo2..

  8. #8
    Guest

    Predefinito

    ok, ho fatto benchmark cn gli script ^^
    solo alla fine vi svelerò ke codice ho usato
    nix82 : 0.0031681060791 secondi
    marcio : 0.00305485725403 secondi

    ed ecco il codice usato
    Codice PHP:
    $testo = strip_tags($msg, '<b>,<i>,<u>,<br>');
    $testo = nl2br($testo);

    $testo = str_replace(":)","<img src=immagini/icon_smile.gif>",$testo);
    $testo = str_replace(":(","<img src=immagini/icon_smile_sad.gif>",$testo);
    $testo = str_replace(":D","<img src=immagini/icon_smile_big.gif>",$testo);
    $testo = str_replace("^^","<img src=immagini/icon_smile_sleepy.gif>",$testo);
    all'inizio ho provato qll d nix ma nn inserisce i dati perkè restituisce null allora ho visto il post d marcio, mi servivano alcuni tag html (ma tra un po' tolgo pure quelli) e quindi ho rimesso la funzione strip_tags ^^ grazie a entrambi ^^ (ora cn calma m guardo meglio lo script by nix )

  9. #9
    Guest

    Predefinito

    Se ti restituisce null allora significa che non hai nominato il textarea con il nome "testo"

  10. #10
    Guest

    Predefinito

    ora controllo e testo, rifaccio il benhmark e carico il + veloce

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •