Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149

    [PHP] conversione tag codice

    salve, sto cercando di sostituire i marcatori di codice(come quelli che si usano qui nell'editor)
    codice:
    [MYCODE][/MYCODE]
    ma con questa funzione
    Codice PHP:
        function elaboraArt($testo) {
            
    // sostituisco l'invio
            
    $order   = array("\r\n""\n""\r");
            
    $replace "
    "
    ;
            
    $testo str_replace($order$replace$testo);    
                            
            
    // sostituisco i marcatori
            
    $testo str_replace("\[CODE\]","<div id='artCode'>",$testo);
            
    $testo str_replace("\[/CODE\]","</div>",$testo);

            return 
    $testo;
        } 
    non me li sostituisce...la prima parte serve per sostituire l'invio e funziona correttamente
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  2. #2
    provato con preg_replace al posto di str_replace?

    Codice PHP:
    function elaboraArt($testo)
    {
        
    // sostituisco l'invio
        
    $order   = array("\r\n""\n""\r");
        
    $replace "
    "
    ;
        
    $testo str_replace($order$replace$testo);

        
    $replace = array( 
                        
    '/[CODICE]$1[/CODICE]',                                 
             ); 

        
    $search = array( 
                        
    "#<div id='artCode'>(.*?)</div>#is"
                        );

        
    $testo preg_replace ($replacesearch$testo); 

        return 
    $testo

    Prova con questo

  3. #3
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    grazie per la risposta..

    ho provato a usare la funzione che hai postato e mi da il seguente warning
    codice:
    Warning: preg_replace() [function.preg-replace]: Unknown modifier 'C' in C:\percorso\prova.php on line 29
    penso si riferisca alla C dell'array $replace, la C dopo la quadra [

    ma preg_replace non serve per sostituire le espressioni regolari??
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  4. #4
    manca il dollaro prima di search, nel preg_replace, errore di distrazione! Correggi search con $search

  5. #5
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    ok che pirla...non l'avevo notato...ho fatto solo copia/incolla...
    cmq da lo stesso errore
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  6. #6

  7. #7
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    lo stesso warning postato prima
    codice:
    Warning: preg_replace() [function.preg-replace]: Unknown modifier 'C' in C:\percorso\prova.php on line 29
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  8. #8
    Scusa ma la funzione è 18 righe di codice, li da errore all 29.

    Posta tutta la pagina

  9. #9
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    l'ho messa in una pagina nuova per non avere problemi con il resto del codice
    Codice PHP:
    <?
        $s 
    "articolo di prova\n
              # sezione: 1\n
              # articolo: 1\n
              \n
              [CODICE]\n
              ciao\n
              [/CODICE]"
    ;
              
              
        echo 
    elaboraArt($s);
                  
              
        function 
    elaboraArt($testo) {
            
    // sostituisco l'invio
            
    $order   = array("\r\n""\n""\r");
            
    $replace "
    "
    ;
            
    $testo str_replace($order$replace$testo);
        
            
    $replace = array("/[CODICE]$1[/CODICE]");
        
            
    $search = array("#<div id='artCode'>(.*?)</div>#is");
        
            
    $testo preg_replace($replace$search$testo);
        
            return 
    $testo;
        }
    ?>
    eccola è tutta qui

    --- edit ---

    ho scoperto che aveva fatto un casino con l'anteprima del codice "aveva trasformato il blocco [ CODE ]
    quindi ho modificato il codice
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  10. #10
    Innanzitutto a me i replace scritti nel primo post funzionano correttamente. Certo, se nel testo scrivi [ MYCODE ] e poi cerchi [ CODE ], chiaramente non lo trovera' mai.

    Poi cerchiamo di non fare confusione con le regexp:

    codice:
    /[CODICE]$1[/CODICE]
    
    e' un pattern sbagliato sintatticamente e concettualmente. Sintatticamente e'
    sbagliato perche' gli slash sono i delimitatori, quindi il pattern e'
    
    /[CODICE]$1[/
    
    seguito dai modificatori C O D I C E ] che non significano niente.
    
    Poi nelle regexp le parentesi quadre hanno un significato specifico, cioe' delimitano 
    le character class, quindi [CODICE] significa UN carattere tra 'C', 'O', 'D', 'I',
    'C' (ancora) e 'E'. Anche $ ha un significato particolare, e cioe' "fine riga".
    
    $1 e' la variabile speciale che contiene il testo contenuto nella prima coppia di parentesi
    tonde, in breve $1 si usa nel REPLACE, (.*?) nel SEARCH, non viceversa.

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.