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

Discussione: replace difettoso

  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    replace difettoso

    ho creato questa classe
    Codice PHP:
    class textToimg
    {
      var 
    $Pattern;
      
    /*Costruttore*/
      
    function textToimg($patt)
      {
        
    $this->Pattern=$patt;
      }
      
    /*Metodo per il cambio del pattern*/
      
    function changePattern($newPatt)
      {
        
    $this->Pattern=$newPatt;
      }
      
    /*Stampa la conversione direttamente su skermo*/
      
    function convertEcho($text)
      {
        echo 
    $this->convert($text);
      }
      
    /*Converte le parole con le immagini date*/
      
    function convert($text)
      {
        
    $newText $text;
        foreach(
    $this->Pattern as $patt => $nomefile)
        {
         
    $newText eregi_replace($patt,"<img src=\"".$nomefile."\" border=\"0\">",$newText);
        }
        return 
    $newText;
      }

    che se si passa al costruttore dei persorsi di file immagini, sostituisce le parole in immagini...lo scopo è di trasformare numeri normali in immagini.

    Se vuoi eseguire questo codice
    Codice PHP:
    $arr = array ( 'prova' => '/prova.jpg',
                     
    '0' => '/0.jpg',
                     
    '1' => '/1.jpg',
                     
    '2' => '/2.jpg',
                     
    '3' => '/3.jpg',
                     
    '4' => '/4.jpg',
                     
    '5' => '/5.jpg',
                     
    '6' => '/6.jpg',
                     
    '7' => '/7.jpg',
                     
    '8' => '/8.jpg',
                     
    '9' => '/9.jpg'
                   
    );
      
      
    $imgcon = new textToimg($arr);
      
    $imgcon->convertEcho("Prova 1"); 
    restituice questo

    [img]/prova.jpg[/img][/b]"> <img src=/1.jpg" border="0">
    In poche parole, mi sostiuisce anche lo zero che ci sta in border="0"

    avevo pensato di usare eregi_replace e mettere che quando trova border="<numero>" non lo deve sostituire, ma nn riesco a creare un pattern adatto.

  2. #2
    è solo la prima occorrenza?
    potresti farti un str_replace mettendo il limit a 1

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da osvi
    è solo la prima occorrenza?
    potresti farti un str_replace mettendo il limit a 1
    cioé?

  4. #4
    ehm, con preg_replace si fa

    $this = preg_replace("/da cercare/", "da mettere", $this, 1);

  5. #5
    sennò fai un replace border="0" -> style="border: zeropx;"
    fai le sostituzioni senza limiti

    dopo rifai `border: zeropx;` -> `border: 0px;`

  6. #6
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    altre soluzioni?

  7. #7
    ma scusa se cambi border="0" in qualcos'altro, e dopo lo ripristini, che problema ti da?!

  8. #8
    io invece volevo togliere le parentesi quadre da un url (in invsion) e non riesco.
    Ho usato:

    $url['html'] = preg_replace( "/]/" , "" , $url['html'] );
    per quella chiusa e
    $url['html'] = preg_replace( "/[/" , "" , $url['html'] );
    per quella aperta


    perchè non funziona secondo voi?
    Arianna Microchip
    FreePlayClub

  9. #9
    alla fine sto usando:

    Codice PHP:
    $url['html'] = preg_replace"/[|]/" "(" $url['html'] ); 
    solo che toglie anche l'ultima ] che è quella del tag!!!
    Non c'è un modo per "limitare" la sostituzione a tutte le parentesi meno che all'ultima?

    ho letto in una pillola dei seguenti quantificatori:
    * zero o più volte
    + una o più volte
    ? zero o una volta
    {n,} almeno n volte
    {n,m} almeno n volte ma non più di m volte


    non esiste un quantificatore che non sostituisca l'ultima?
    Arianna Microchip
    FreePlayClub

  10. #10
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    dovresti conoscerne a priori il numero..

    fai un conto del numero esatto e lo passi a {n,m}, costruendo la stringa dell'espressione regolare dinamicamente..

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

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.