PHPBBIntegrare PHPBB PHPFunzioni PHP CFunzioni C EcologiaLa mia ecologia   Chi siamoChi è Senamion HomeHome page corner Il Web e l'ecologia

Senamion


Chi siamo:

Il web e l'ecologia, condividere il web e un momento di riflessione sullo stato dell'ecologia e sul suo futuro

Google

[PHP] Eliminare caratteri (spazi, parentesi, etc.) da una stringa

6 Luglio 2006 by Giovanni | Argomenti: none | 70506

Ritrovo spesso nei log di accesso al sito la ricerca di funzioni in PHP per cancellare gli spazi, le parentesi oppure caratteri qualsiasi.
In realtà la funzione PHP é già presente nelle librerie standard ed é molto semplice, é la funzione str_replace.

A questa funzione è infatti possibile passare come parametro di sostituzione una stringa vuota. Nel qual caso il carattere cercato viene cancellato.
Per esempio:

$stringa = str_replace(" ", "", $stringa);

toglie gli spazi dalla stringa.
Oppure per togliere le parentesi aperte:

$stringa = str_replace("(", "", $stringa);

Così di seguito.
Per l’eliminazione degli spazi sono comunque disponibili tre funzioni aggiuntive: trim, ltrim e rtrim che tolgono gli spazi rispettivamente ad inizio e fine, solo a sinistra e solo a destra.

Pubblicato in Funzioni e classi PHP e C |

21 Commenti a “[PHP] Eliminare caratteri (spazi, parentesi, etc.) da una stringa”

  1. erik d scrive:

    Ciao. Ho una stringa(testo) passata per post da mostrare poi a video.
    Il problema è che facendo mysql_escape_string per ricevere il dato inviato in post al posto dell’invio e nuovalinea mi ci mette
    i caratteri \n\r (o /n/r, nn ricordo) che essendo codici ascii sono visibili nel formato che ti ho scritto ma non è quello il formato con cui son scritti (credo che \n abbia codice ascii 10)
    e per questo la funzione str_replace non riesce a rimpiazzarli.
    Sai darmi una dritta?

  2. Giovanni scrive:

    \n\r significano “new line” e “carriage return”, ossia nuova linea e ritorno carrello.
    Per rimpiazzarli dovrebbe essere sufficiente passarli come primo parametro della funzione str_replace, così (nell’esempio li sostituisce con spazio):

    str_replace(array(”\r”, “\n”), ” “, $stringa);

  3. erik scrive:

    Io usavo
    $testo=mysql_escape_string($_POST['testo'])
    e dopo lo string replace non funzionava + …
    Ho tolto l’escape string ora va!
    TNX!

  4. Franco scrive:

    Ciao Giovanni vorrei farti una domanda che nn centra niente sull’argomento. Voglio sapere come passare un array da uno script all’altro. Ho notato che ci sono problemi in quanto non vengono presi tutti i valori effettivi dell’array. Mi hanno consigliato di usare il serialize e l’urlencode (e poi unserialize e urldecode). Mi potresti aiutare? Ciao

  5. Giovanni scrive:

    Da una funzione all’altra gli array si passano normalmente come parametro.
    Tra due pagine diverse è sufficiente aggiugere, come hai scritto, il parametro serialize quando chiami la nuova pagina e unserialize per decodificarlo.
    Ti ho linkato il manuale dove c’è un buon esempio.

  6. Franco scrive:

    mmh… il problema ke mi prende solo 3 valori su 18… e poi neanke quei tre valori vengono “unserializzati”. Se poi mi puoi dire quale è l’esempio pratico giusto per la guida passatami visto ke l’inglese nn è il mio forte.
    Ciao

  7. Giovanni scrive:

    Prova a postare il tuo codice che vedo se trovo il problema

  8. Franco scrive:

    il problema è ke koperto da login… ti posto solo le due pagine o tutto il sito? dimmi dove postarlo. ciao

  9. Giovanni scrive:

    Posta solo le due pagine. O qui o al mail info[CHIOCCIOLA]senamion.it

  10. Franco scrive:

    Ho postato il tutto ieri sera. Aspetto una risposta. Ciao

  11. Franco scrive:

    GIOVANNI HELP ME!!!

  12. Giovanni scrive:

    Mi dispiace ma è difficile fare il debug di tanto codice, era più corretto postare solo il minimo indispensabile.
    Comunque prima di tutto sostituisci la riga:

    echo $valori = unserialize($post);

    con

    $valori = unserialize($post);
    print_r($valori);

    Se l’output è corretto potrebbe essere sufficiente cambiare il ciclo:

    for ($i = 0; $i < sizeof($valori); $i++)

    Con

    for ($i = 0; $i < count($valori); $i++)

  13. Franco scrive:

    niente… ora ti riposto tt con “poke” righe. ok?

  14. Giovanni scrive:

    Ma soprattutto posta cosa esce con print_r($valori);
    Dovrebbe uscire la struttura dell’array passato!

  15. Franco scrive:

    niente, è come se nn fosse arrivato niente al secondo script. ora nn so se è sbagliato il passaggio.. ma nn penso…

  16. Luca scrive:

    ragazzi scusate, vorrei chiedervi una cosa sul replace
    io devo passare unastringa che contiene dei ” ma voglio cambiarli tutti in \”…sapete con l’html …si può fare? penso di si, ma vorrei capire che va messo nei parametri di replace
    denkyu

  17. Giovanni scrive:

    Si può fare, tieni conto che per scrivere un ” devi metterci \ davanti e per scrivere \ ne devi scrivere 2.
    Quindi:
    $stringa = str_replace(""", """, $stringa);

  18. Corrado scrive:

    Grazie il topic mi è stato di grande aiuto, volevo cancellare un elemento dalla mia variabile e non capivo come togliere gli spazi.

    Saluti

  19. dandan86 scrive:

    Grazie della condivisione fratello!
    con il tuo post ho risolto il problema!

    Avevo dei dati impuri, ricevuti tramite $_POST[], questi presentavano uno spazio bianco alla fine della stringa.
    Usando rtrim() PHP non riusciva a toglierlo, ma con la funzione da te citata tutto si è risolto.

  20. Giuseppe scrive:

    Salve riscontro un problemino:
    devo scrivere da form in un file .txt uno script google uso e questo script :

    <?php

    echo “”;
    echo “”;
    $errore= false;

    If((!$nome)) {

    $errore=true;
    echo “Non hai compilato il campo”; header(”Refresh: 2; URL=banner.php”);
    exit;
    }
    else{
    echo “”;
    }

    if (!$apri = fopen (”txt/banner_1.txt”,”w+”)) {
    $errore=true;
    echo “non posso aprire il file”;
    }else{
    $apriw = fopen (”txt/banner_1.txt”,”w+”);

    fputs($apriw,”$nome”);

    fclose($apriw);
    }
    if($errore){
    echo” Riinseriscili perfavore”;
    }
    header(”Refresh: 0; URL=banner.php”);
    ?>

    Funziona riesce a scrivere, pero’ scrive anche il carattere \ sparso in giro per lo script e non mi fa partire lo script, come posso fare perche’ non sia visibile ??
    Grazie

  21. Giovanni scrive:

    Non ho capito.

Scrivi un commento