W3docs

stripcslashes()

PHP stripcslashes() decodifica le sequenze di escape in stile C (\n, \t, \xHH, codici ottali) in caratteri reali. L'inverso esatto di addcslashes().

Introduzione

La funzione stripcslashes() di PHP decodifica una stringa che contiene sequenze di escape in stile C. Interpreta sequenze come \n (nuova riga), \t (tabulazione), \r (ritorno a capo), \xHH (esadecimale) e \NNN (ottale), convertendo ciascuna nel carattere effettivo che rappresenta. Quando un backslash precede un carattere ordinario (che non fa parte di una sequenza riconosciuta), il backslash viene semplicemente eliminato.

È l'inverso esatto di addcslashes(): tutto ciò che addcslashes() esegue l'escape, stripcslashes() lo ripristina. Questa è la differenza principale rispetto a stripslashes(), che rimuove soltanto i backslash aggiunti da addslashes() e non interpreta le sequenze di escape.

Questa pagina illustra la sintassi, il modo in cui viene decodificato ogni tipo di sequenza di escape, un ciclo completo di andata e ritorno con addcslashes() e il tranello più comune legato alle stringhe PHP tra apici doppi.

Sintassi

stripcslashes(string $string): string
ParametroDescrizione
$stringLa stringa da decodificare. Può contenere sequenze di escape in stile C e/o backslash letterali.

Valore di ritorno: una nuova stringa con le sequenze di escape decodificate. La stringa originale non viene modificata.

Esempio di base

php— editable, runs on the server

In PHP, il letterale tra apici doppi "Hello\\ World\\!" riduce già ogni \\ a un singolo backslash, quindi il valore passato alla funzione è Hello\ World\!. Lo spazio e il carattere ! non fanno parte di alcuna sequenza di escape, perciò stripcslashes() rimuove i backslash che li precedono. L'output è:

Hello World!

Decodifica delle sequenze di escape

A differenza di stripslashes(), stripcslashes() converte attivamente le sequenze riconosciute in veri caratteri di controllo. Questo esempio usa stringhe sorgente tra apici singoli, in modo che i backslash arrivino alla funzione intatti:

<?php

echo stripcslashes('Line1\nLine2'), "\n";      // \n becomes a real newline
echo stripcslashes('Column1\tColumn2'), "\n";   // \t becomes a real tab
echo stripcslashes('\x41\x42\x43'), "\n";       // hex codes -> ABC
echo stripcslashes('\101\102\103'), "\n";       // octal codes -> ABC

Output:

Line1
Line2
Column1	Column2
ABC
ABC

Sia \x41 (esadecimale) sia \101 (ottale) corrispondono al codice carattere 65, cioè la lettera A.

Andata e ritorno con addcslashes()

Poiché stripcslashes() inverte addcslashes(), eseguire l'escape di una stringa e poi decodificarla restituisce esattamente il valore originale:

<?php

$original = "Price: \$5\nNew line";

// Escape the dollar sign and the newline.
$escaped = addcslashes($original, "\$\n");
echo $escaped, "\n";              // Price: \$5\nNew line

$restored = stripcslashes($escaped);
var_dump($original === $restored); // bool(true)

Output:

Price: \$5\nNew line
bool(true)

Apici singoli e apici doppi

La confusione più comune con stripcslashes() riguarda chi elabora i backslash. PHP stesso interpreta le sequenze di escape all'interno delle stringhe tra apici doppi prima ancora che stripcslashes() venga eseguita, quindi una sequenza potrebbe essere già stata decodificata:

<?php

// Double quotes: PHP turns "\n" into a newline first,
// so stripcslashes() never sees the backslash.
echo strlen("\n");                 // 1

// Single quotes: the two characters \ and n are passed
// literally, and stripcslashes() does the decoding.
echo strlen(stripcslashes('\n'));  // 1

Output:

11

Quando le sequenze di escape provengono da una fonte esterna (un file, un database, l'input dell'utente), arrivano come caratteri letterali \ + n, quindi stripcslashes() è lo strumento giusto per decodificarle.

Quando usarla

  • Per invertire l'output di addcslashes().
  • Per decodificare sequenze di escape in stile C memorizzate come testo letterale (valori di configurazione, righe di log, dati esportati da programmi C).
  • Per ripristinare caratteri di controllo come tabulazioni e nuove righe di cui era stato eseguito l'escape per una memorizzazione o un trasporto sicuri.

Per la semplice rimozione dei backslash senza interpretazione delle sequenze di escape, usa invece stripslashes().

Conclusione

stripcslashes() decodifica le stringhe contenenti sequenze di escape in stile C, trasformando in caratteri effettivi i codici \n, \t, esadecimali (\xHH) e ottali (\NNN) ed eliminando i backslash isolati. È l'inverso preciso di addcslashes(), il che la rende affidabile per l'escape con ciclo di andata e ritorno. Tieni presente la distinzione rispetto a stripslashes() e ricorda che le stringhe PHP tra apici doppi possono decodificare le sequenze prima dell'esecuzione della funzione.

Pratica

Pratica
Qual è la funzione principale della funzione stripcslashes() in PHP?
Qual è la funzione principale della funzione stripcslashes() in PHP?
Was this page helpful?