|
TYΠOI: String (Αλφαριθμικό)
Ένα string είναι μια σειρά χαρακτήρων. Στην PHP, ένας χαρακτήρας είναι το ίδιο με ένα byte, δηλαδή, υπάρχουν ακριβώς 256 διαφορετικοί πιθανοί χαρακτήρες. Αυτό επίσης σημαίνει ότι η PHP δεν υποστηρίζει Unicode. Δείτε την utf8_encode() και την utf8_decode() σχετικά με υποστήριξη Unicode.
Δεν υπάρχει πρόβλημα για ένα string να γίνει πολύ μεγάλο. Δεν υπάρχει πρακτικά κάποιο όριο για το μέγεθος των strings που να επιβάλλει η PHP, συνεπώς δεν υπάρχει λόγος να ανησυχείτε για μεγάλα strings.
Ένα λεκτικό string μπορεί να προσδιοριστεί με τρεις διαφορετικούς τρόπους.
- Μονό εισαγωγικό (Single quoted), πχ: 'string'
- με διπλό εισαγωγικό (quote), πχ: "string"
- Σύνταξη heredoc
Μονό εισαγωγικό (Single quoted)
Ο ευκολότερος τρόπος για να ορίσετε ένα απλό string είναι να το βάλετε μέσα σε μονά εισαγωγικά (δηλαδή στον χαρακτήρα ' ).
Για να ορίσετε ένα απλό εισαγωγικό, θα χρειαστεί να προσθέσετε ένα backslash (\), όπως και σε πολλές άλλες γλώσσες. Αν το backslash πρέπει να εμφανιστεί πριν από ένα απλό εισαγωγικό ή στο τέλος του string, θα χρειαστεί να το διπλασιάσετε. Σημειώστε ότι αν προσπαθήσετε να αποφύγετε (escape) οποιονδήποτε άλλο χαρακτήρα, το backslash θα τυπωθεί! Συνήθως δεν υπάρχει ανάγκη να θέλουμε να αποφύγουμε (escape) την εμφάνιση του ίδιου του backslash.
Παρατήρηση: Σε αντίθεση με τις δύο άλλες συντάξεις, οι μεταβλητές και οι ακολουθίες από escape για ειδικούς χαρακτήρες δεν θα επεκταθεί όταν εμφανίζονται σε strings που ορίζονται από απλά εισαγωγικά.
<?php echo 'this is a simple string';
echo 'You can also have embedded newlines in strings this way as it is okay to do';
// Outputs: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';
// Outputs: You deleted C:\*.*?
echo 'You deleted C:\\*.*?';
// Outputs: You deleted C:\*.*?
echo 'You deleted C:\*.*?';
// Outputs: This will not expand: \n a newline
echo 'This will not expand: \n a newline'
;
// Outputs: Variables do not $expand $either
echo 'Variables do not $expand $either';
?>
|
Διπλά εισαγωγικά
Αν το string περικλείεται σε διπλά εισαγωγικά ("), η PHP καταλαβαίνει περισσότερες ακολουθίες από escape (escape sequences) για ειδικούς χαρακτήρες:
Χαρακτήρες που εξαιρούνται (Escaped characters)
sequence | meaning |
\n |
linefeed (LF or 0x0A (10) in ASCII) |
\r |
carriage return (CR or 0x0D (13) in ASCII) |
\t |
horizontal tab (HT or 0x09 (9) in ASCII) |
\\ |
backslash |
\$ |
dollar sign |
\" |
double-quote |
\[0-7]{1,3} |
η ακολουθία των χαρακτήρων που ταιριάζουν στην κανονική έκφραση είναι ένας χαρακτήρας στο οχταδικό σύστημα |
\x[0-9A-Fa-f]{1,2} |
η ακολουθία των χαρακτήρων που ταιριάζουν στην κανονική έκφραση είναι ένας χαρακτήρας στο δεκαεξαδικό σύστημα |
Επαναλαμβάνουμε ότι αν προσπαθήσετε να αποφύγετε (escape) οποιοδήποτε άλλο χαρακτήρα, το backslash θα τυπωθεί!
Αλλά το πιο σημαντικό χαρακτηριστικό των strings που ορίζονται σε διπλά εισαγωγικά είναι το γεγονός ότι τα ονόματα των μεταβλητών θα επεκταθούν. Δείτε το string parsing για λεπτομέρειες.
Heredoc
Ένας άλλος τρόπος για να ορίσουμε strings είναι χρησιμοποιώντας τη σύνταξη heredoc ("<<<"). Θα πρέπει να προσθέσουμε έναν identifier μετά τα <<<, στη συνέχεια το string, και μετά τον ίδιο identifier για να κλείσουμε την αναφορά.
Ο identifier κλεισίματος πρέπει να αρχίζει στην πρώτη στήλη της γραμμής. Επίσης, ο identifier που χρησιμοποιείται πρέπει να ακολουθεί τους ίδιους κανόνες ονοματολογίας όπως και οποιοδήποτε άλλο label στην PHP: πρέπει να περιέχει μόνο αλφαριθμητικούς χαρακτήρες και underscores, και πρέπει να αρχίζει με ένα μη αριθμητικό χαρακτήρα ή underscore.
Το Heredoc text συμπεριφέρεται ακριβώς όπως το double-quoted string, χωρίς όμως τα double-quotes. Αυτό σημαίνει πως δεν χρειάζεται να προσπαθείτε να κάνετε escape quotes στα έγγραφα σας εδώ, αλλά μπορείτε να χρησιμοποιείτε τους κώδικες για escape που αναφέρθηκαν παραπάνω. Οι μεταβλητές επεκτείνονται, αλλά η ίδια προσοχή πρέπει να δίνεται όταν εκφράζουμε σύνθετες μεταβλητές μέσα σε ένα τέτοιο έγγραφο όπως και με τα strings.
Παράδειγμα Heredoc string quoting
<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
/* More complex example, with variables. */
class foo
{
var $foo;
var $bar;
function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
} }
$foo = new foo();
$name = 'MyName';
echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT; ?>
|
Syntax PHP, v1.1 / April 2006
|