PHP stringhe


Esempio

Una stringa in PHP è una serie di caratteri a byte singolo (ovvero non esiste un supporto Unicode nativo) che può essere specificata in quattro modi:

Singolo quotato

Visualizza le cose quasi completamente "così come sono". Le variabili e la maggior parte delle sequenze di escape non saranno interpretate. L'eccezione è che per visualizzare una virgoletta singola letterale, si può scappare con una barra rovesciata ', e per visualizzare una barra rovesciata, si può scappare con un'altra barra rovesciata \

$my_string = 'Nothing is parsed, except an escap\'d apostrophe or backslash. $foo\n';
var_dump($my_string);

/*
string(68) "Nothing is parsed, except an escap'd apostrophe or backslash. $foo\n"
*/

Doppio virgolette

A differenza di una stringa con quotatura singola, verranno valutati nomi di variabili semplici e sequenze di escape nelle stringhe. Le parentesi graffe (come nell'ultimo esempio) possono essere utilizzate per isolare nomi di variabili complessi.

$variable1 = "Testing!";
$variable2 = [ "Testing?", [ "Failure", "Success" ] ];
$my_string = "Variables and escape characters are parsed:\n\n";
$my_string .= "$variable1\n\n$variable2[0]\n\n";
$my_string .= "There are limits: $variable2[1][0]";
$my_string .= "But we can get around them by wrapping the whole variable in braces: {$variable2[1][1]}";
var_dump($my_string);

/*
string(98) "Variables and escape characters are parsed:

Testing!

Testing?

There are limits: Array[0]"

But we can get around them by wrapping the whole variable in braces: Success

*/

heredoc

In una stringa heredoc, i nomi delle variabili e le sequenze di escape vengono analizzati in modo simile alle stringhe con virgolette doppie, sebbene le parentesi non siano disponibili per nomi di variabili complessi. L'inizio della stringa è delimitato da <<< identifier e la fine da identifier , dove identifier è un nome PHP valido. L'identificatore finale deve apparire su una riga da solo. Nessuno spazio bianco è consentito prima o dopo l'identificatore, anche se come qualsiasi riga in PHP, deve anche essere terminato da un punto e virgola.

$variable1 = "Including text blocks is easier";
$my_string = <<< EOF
Everything is parsed in the same fashion as a double-quoted string,
but there are advantages. $variable1; database queries and HTML output
can benefit from this formatting.
Once we hit a line containing nothing but the identifier, the string ends.
EOF;
var_dump($my_string);

/*
string(268) "Everything is parsed in the same fashion as a double-quoted string,
but there are advantages. Including text blocks is easier; database queries and HTML output
can benefit from this formatting.
Once we hit a line containing nothing but the identifier, the string ends."
*/

Nowdoc

Una stringa nowdoc è come la versione a virgola singola di heredoc, anche se non vengono valutate nemmeno le sequenze di escape più elementari. L'identificatore all'inizio della stringa è racchiuso tra virgolette singole.

PHP 5.x 5.3
$my_string = <<< 'EOF'
A similar syntax to heredoc but, similar to single quoted strings,
nothing is parsed (not even escaped apostrophes \' and backslashes \\.)
EOF;
var_dump($my_string);

/*
string(116) "A similar syntax to heredoc but, similar to single quoted strings,
nothing is parsed (not even escaped apostrophes \' and backslashes \\.)"
*/