Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    str_replace PHP Notice: Undefined variable

    Salve a tutti, dopo una lunga gavetta nel mondo dell'ASP, sono passato al PHP.

    Sono ancora un principiante e mi trovo in difficoltà con questo script:

    <?php
    // Codice di codifica delle pagine, sostituzione variabili

    $Special[0] = "\[acapo\]";
    $Special[1] = "\"";
    $Special[2] = "&";
    $Special[3] = "è";
    $Special[4] = "é";
    $Special[5] = "ò";
    $Special[6] = "ì";
    $Special[7] = "à";
    $Special[8] = "ù";
    $Special[9] = "\[titolo\]";
    $Special[10] = "\[/titolo\]";
    $Special[11] = "\[contenuto\]";
    $Special[12] = "\[/contenuto\]";
    $Special[13] = "\[b\]";
    $Special[14] = "\[/b\]";
    $Special[15] = "\[i\]";
    $Special[16] = "\[/i\]";
    $Special[17] = "\[u\]";
    $Special[18] = "\[/u\]";

    $Special_code[0] = "\<br /\>";
    $Special_code[1] = "&ldquo;";
    $Special_code[2] = "&amp;";
    $Special_code[3] = "&egrave;";
    $Special_code[4] = "&eacute;";
    $Special_code[5] = "&ograve;";
    $Special_code[6] = "&igrave;";
    $Special_code[7] = "&agrave;";
    $Special_code[8] = "&ugrave;";
    $Special_code[9] = "\<p class\=\"titolo\"\>";
    $Special_code[10] = "\</p\>";
    $Special_code[11] = "\<p class\=\"contenuto\"\>";
    $Special_code[12] = "\</p\>";
    $Special_code[13] = "\<b\>";
    $Special_code[14] = "\</b\>";
    $Special_code[15] = "\<i\>";
    $Special_code[16] = "\</i\>";
    $Special_code[17] = "\<u\>";
    $Special_code[18] = "\</u\>";

    // Funzioni
    function replace_var($variabile){
    for($i = 0; $i < 19; $i++){
    $variabile = str_replace($Special[$i], $Special_code[$i], $variabile);
    }
    print $variabile;
    }
    ?>

    ma il log php di MAMP per mac os x mi dice per ogni stringa dell'array Special e Special_code questo errore PHP Notice: Undefined variable: Special in /Users/Fabrizio/Web Sites/Web Business/RunandGun.it/include/config.php on line 47

    la riga 47 di config.php è questa:
    $variabile = str_replace($Special[$i], $Special_code[$i], $variabile);

    praticamente la variabile "$variabile" proviene da una pagina in cui includo il file config.php e contiene il contenuto di un campo di una riga in un db mysql.

    Praticamente ho voluto creare uno pseudo bbcode, ma la sostituzione nell'output non avviene generandomi quel php notice.

    io ho effettuato più ricerche ma senza risultato, se non volete rispondere ma avete consiglio su dove trovare la risposta per favore allora dite pure.

    grazie di tutto
    Nemesis
    www.slamdunk.it

  2. #2
    per favore qualcuno che mi aiuti, è molto importante.
    Nemesis
    www.slamdunk.it

  3. #3
    Hai verificato che in config.php, quando esegui il ciclo, tutte le variabili che utilizzi in str_replace siano valorizzate?
    Inoltre ti faccio presente che con il tuo ciclo avviene una sostituzione del valore di $variabile, questo ovviamente non è un errore (anzi, probabilmente lo fai apposta), ma tienilo presente nelle operazioni che fai successivamente con $variabile.
    Per maggiore elasticità del codice, ti consiglio di sostituire il valore numerico nel ciclo for (19) con un count sull'array $Special.
    Sono solo accorgimenti, non credo ti risolveranno il problema.
    Non so cos'altro dirti

    Ciao,
    Gabriele.
    Gabriele Fabbri
    http://www.overzero.it

  4. #4
    sai dirmi se noti qualche errore nell'escape dei caratteri?

    cmq le variabili sono valorizzate prima dell'esecuzione della funzione in quanto la struttura del codice sarebbe questa:

    prova.php ->
    include config.php (con array e funzione)
    richiama funzione con passaggio di $variabile

    sembra che ci sia un problema con quello che c'è nei valori degli array.

    non noti qualche carattere strano o qualcosa che possa creare conflitto?

    oppure può il conflitto provenire dai dati del database che crea confusione nella funzione?
    I dati del db sono semplicemente campi char o longchar. quindi semplici stringhe...

    mwa

    cmq grazie tantissime
    Nemesis
    www.slamdunk.it

  5. #5
    Scusa se ti rispondo solo ora.
    Dunque, se ci fossero errori negli escape dei caratteri e degli apostrofi dovresti accorgertene perchè ti segnalerebbe errore qualsiasi editor di poco più avanzato di notepad, con colorazioni nomale del codice seguente l'errore.
    In realtà quello che non mi è del tutto chiaro è il motivo per cui fai escape anche dei "<" e ">"... sono stringhe dentro un array, non dovrebbero causarti problemi anche senza escape.

    G.
    Gabriele Fabbri
    http://www.overzero.it

  6. #6
    intanto ti dico grazie dell'aiuto.

    ho risolto il problema, infatti il problema risiedeva non nei caratteri di escape ma nel fatto che dentro la funzione dovevo dichiarare

    globla $Special;
    global $Special_code;

    così potevo usarle nello str_replace.

    adesso funziona tutto perfetto, evviva le funzioni. ma almeno anche grazie al tuo intervento ho capito come iniziare a cercare l'errore, prima nei valori delle stringhe, poi nella funzione visto che il resto era ok.

    grazie ancora.
    Nemesis
    www.slamdunk.it

  7. #7
    A str_replace puoi anche passare direttamente gli array, senza ciclare il tutto.
    Codice PHP:
    $variabile str_replace($Special$Special_code$variabile); 

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.