Reading a lot of code sometimes uses single quotes or double quotes to implement content containing strings. In fact, variables in double quotes can be parsed simply. single quotes are absolute strings.
1. define a string
In PHP, you can use single quotes or double quotes to define strings. However, the same single or double quotation marks must be used to define strings. for example, 'hello' and 'hello' are invalid strings.
When defining a string, only one type of quotation mark is considered as a definition character, that is, single quotation marks or double quotation marks. Therefore, if a string starts with double quotation marks, only the double quotation marks are parsed by the analyzer. In this way, you can include any other character in the double quotation marks, or even single quotation marks. The following quotation marks are valid:
Php code
The code is as follows:
$ S = "I am a 'single quote string 'inside a double quote string ";
$ S = 'I am a "double quote string" inside a single quote string ';
$ S = "I am a 'single quote string 'inside a double quote string ";
$ S = 'I am a "double quote string" inside a single quote string ';
And the string "Why doesn' t" this "work? "Is divided into three sections. If you want to express double quotation marks in this string, you can use the escape character "\" (backslash) to convert it to "Why doesn't \" this \ "work? .
2. single and double quotation marks in string variables
PHP allows us to directly include string variables in double quotes. we can find that the processing results of the following two strings are the same.
The code is as follows:
$ Full_name = $ first_name. ''. $ last_name;
$ Full_name = "$ first_name $ last_name ";
The processing of single and double quotation marks is different in PHP. The content in the double quotation mark string can be interpreted and replaced, while the content in the single quotation mark string is always considered as a common character. For example:
Php code
The code is as follows:
$ Foo = 2;
Echo "foo is $ foo"; // print the result: foo is 2
Echo 'foo is $ Foo'; // print the result: foo is $ foo
Echo "foo is $ foo \ n"; // print the result: foo is 2 (line feed at the same time)
Echo 'foo is $ foo \ n'; // print the result: foo is $ foo \ n
$ Foo = 2;
Echo "foo is $ foo"; // print the result: foo is 2
Echo 'foo is $ Foo'; // print the result: foo is $ foo
Echo "foo is $ foo \ n"; // print the result: foo is 2 (line feed at the same time)
Echo 'foo is $ foo \ n'; // print the result: foo is $ foo \ n
As you can see, even the backslash in a single quotation mark loses its extended meaning (except for inserting the backslash \ and inserting the single quotation mark \'). Therefore, you should use double quotation marks when you want to replace variables in strings and include escape sequences such as \ n (linefeed. Single quotation mark strings can be used anywhere else. the processing speed of single quotation mark strings in the script is faster, because the PHP syntax analyzer treats single quotation mark strings in a simple way, the processing of double quotation marks is more complicated because the strings also need to be parsed, so the processing speed is slightly slower.
When you reference a complex variable combination in a string, some problems may occur. the following code works properly:
Php code
The code is as follows:
Echo "value = $ foo ";
Echo "value = $ a [$ I]";
Echo "value = $ foo ";
Echo "value = $ a [$ I]";
However, the following code cannot get the expected results:
Echo "value = $ a [$ I] [$ j]"; // we want to print an element of the two-dimensional array $.
To avoid potential problems in the use of these strings, we usually separate complex variables from the strings, like this: echo 'value = '. $ a [$ I] [$ j]; // point (.) used for string connection (.)
Another way is to enclose complex variables in curly brackets so that the syntax analyzer can correctly identify them:
Echo "value = {$ a [$ I] [$ j]}" // print an element of a two-dimensional array $
In this way, new problems have emerged. When we want to reference the curly braces in a string, remember to use the escape character:
Php code
The code is as follows:
$ Var = 3;
Echo "value = {$ var}"; // print the result "value = 3"
Echo "value =\{ $ var}"; // print the result "value = {3 }"
$ Var = 3;
Echo "value = {$ var}"; // print the result "value = 3"
Echo "value =\{ $ var}"; // print the result "value = {3 }"
3. in SQL statements
This is a common problem. the SQL statement for inserting a database uses single quotes to define strings. if you want to insert a string containing single quotes into the database, this SQL statement will fail.
For example: $ SQL = "insert into userinfo (username, password) Values ('o 'keping', '123 ')"
In this case, add the escape character backslash to the SQL statement,
That is :...... Values ('o \ 'keping ',......
Of course, you can also use the addslashes () function. the Function adds an escape character,
That is, $ s = addslashes ("O 'keyun ")...... Values ('". $ s ."',......
Another way is to set the magic-quotes option in php. ini. if this option is enabled, if the single quotation marks are included in the information submitted through the form, an escape character such as is automatically added. Therefore, you do not need to use other functions.
Supplement: this should start with the function of double quotation marks and single quotation marks: the fields in double quotation marks will be interpreted by the compiler and then output as HTML code, but the fields in single quotation marks do not need to be interpreted and output directly.
For example:
The code is as follows:
$ Abc = 'I love u ';
Echo $ abc // The result is: I love u
Echo '$ ABC' // The result is: $ abc
Echo "$ abc" // The result is: I love u
Therefore, when assigning values to SQL statements in the database, you must use SQL = "select a, B, c from..." in double quotation marks. However, single quotation marks in SQL statements are used to quote field names.
Example: select * from table where user = 'abc ';
The SQL statement here can be directly written as SQL = "select * from table where user = 'abc '"
However, if it is as follows:
The code is as follows:
$ User = 'abc ';
SQL1 = "select * from table where user = '". $ user. "'"; comparison
SQL2 = "select * from table where user = 'abc '"
I add spaces between single quotes and double quotes. I hope you can see it clearly.
That is, replacing 'ABC' with '". $ user."' is in a single quotation mark. It only splits the entire SQL string. SQL1 can be divided into the following three parts:
1: "select * from table where user = '"
2: $ user
3 :"'"
Use. to connect strings.
I. define strings using quotation marks
In PHP, a string is usually defined in a pair of quotation marks, such:
'I am a string in single quotes'
"I am a string in double quotes"
The PHP syntax analyzer uses pair quotation marks to determine a string. Therefore, all strings must use the same single or double
To define start and end. For example, the following string definition is illegal:
"I am not a valid string since I have unmatching quote marks'
'Me neither! "
When defining a string, only one type of quotation mark is considered as a definition character, that is, single quotation marks or double quotation marks. Therefore, if a string is
The quotation marks are parsed by the analyzer. In this way, you can include any other character in the double quotation mark string, or even a single cited
. The following quotation marks are valid:
$ S = "I am a 'single quote string 'inside a double quote string ";
$ S = 'I am a "double quote string" inside a single quote string ';
When PHP encounters a quotation mark corresponding to the start of the string, it is considered to have reached the end of the string, so:
"Why doesn't" this "work? "
In fact, PHP syntax analyzer is divided into three parts:
"Why doesn' t" -- contains a single double quotation mark string
This -- Redundant characters, which cannot be processed by the analyzer
"Work? "-- Common string
The above example attempts to include double quotation marks in the double quotation mark string, and the analyzer considers the string to be closed when the second double quotation mark is encountered.
. To enclose quotation marks, the analyzer must ignore the original meaning of the regular quotation marks in a string.
Add a backslash to tell PHP: This quotation mark is a part of the string. the correct expression is as follows:
"Why doesn't \" that \ "work? "
A common problem in English strings is the use of the marker, because it is a single quotation mark, which is very common in English strings.
(In English ). You must handle these characters with caution:
You \ 'd better escape your apostrophes'
We can see that the backslash has its special meaning in the string. when we need to include the backslash itself in the string, we need
Add a backslash before the symbol. For example:
$ File = "c: \ windows \ system. ini ";
Echo $ file; // The printed result is: c: windowssystem. ini.
$ File = "c :\\ windows \ system. ini ";
Echo $ file; // The printed result is: c: \ windows \ system. ini.
Another string definition method can eliminate the troubles of special characters and facilitate reference of long texts. This string definer
Method < <符号紧跟一个自定义字符串开头,最后一行以该自定义字符串结束,并且必须顶格。
2. string connection
A string can be connected using a string connector (.), for example:
$ First_name = 'Charlie ';
$ Last_name = 'brown ';
$ Full_name = $ first_name. ''. $ last_name;
A common purpose is to create a large HTML string code. The value pair (=) connector (.) can be abbreviated as A (. =) character.
Number, such:
$ Html ='
';$ Html. ='
Number |
Square |
';For ($ I = 0; $ I <10; $ I ++ ){$ Square = $ I * $ I;$ Html. ='
'. $ I .' |
'. $ Square .' |
';}$ Html. ='
';
3. use variables in strings
This feature allows you to stick a large number of simple strings without using the concatenation symbol. PHP allows us to directly include words in double quotation marks
String variables, we can find that the processing results of the following two strings are the same.
$ Full_name = $ first_name. ''. $ last_name;
$ Full_name = "$ first_name $ last_name ";
The processing of single and double quotation marks is different in PHP. The content in the double quotation mark string can be interpreted and replaced.
The content in the string is generally considered a common character. For example:
$ Foo = 2;
Echo "foo is $ foo"; // print the result: foo is 2
Echo 'foo is $ Foo'; // print the result: foo is $ foo
Echo "foo is $ foo \ n"; // print the result: foo is 2 (line feed at the same time)
Echo 'foo is $ foo \ n'; // print the result: foo is $ foo \ n
As you can see, in single quotes, even the backslash also loses its extended meaning (except for inserting the backslash \ and the insert ticket
Quotation marks \'). Therefore, when you want to replace the variable in the string and include escape sequences such as \ n (linefeed), you should use double quotes
. The single quotation mark string can be used anywhere else. the processing speed of the single quotation mark string in the script is faster, because the PHP syntax analyzer
The processing of single quotation marks is simple, while the processing of double quotation marks is more complicated because the strings need to be resolved internally, so the processing speed is high.
Slow.
When you reference a complex variable combination in a string, some problems may occur. the following code works properly:
Echo "value = $ foo ";
Echo "value = $ a [$ I]";
However, the following code cannot get the expected results:
Echo "value = $ a [$ I] [$ j]"; // we want to print an element of the two-dimensional array $.
To avoid potential problems in the use of these strings, we usually separate complex variables from the strings, like this:
Echo 'value = '. $ a [$ I] [$ j];
Another way is to enclose complex variables in curly brackets so that the syntax analyzer can correctly identify them:
Echo "value = {$ a [$ I] [$ j]}" // print an element of a two-dimensional array $
In this way, new problems have emerged. When we want to reference the curly braces in a string, remember to use the escape character:
$ Var = 3;
Echo "value = {$ var}"; // print the result "value = 3"
Echo "value =\{ $ var}"; // print the result "value = {3 }"
III. slashes and SQL statements
Generating HTML code or SQL query statements is a common and interesting issue when writing PHP programs. Why,
Because this involves generating another type of code, you must carefully consider and follow the syntax and rules required by this code.
.
Let's take a look at this example. if you want to query a database named "O" Keefe ", it is usually in the form of SQL statements.
Yes:
Select * from users where last_name = 'O \ 'Keefe'
Note that the SQL statement must be escaped by a backslash. PHP provides some special functions to handle this problem.
The function AddSlashes ($ str) is used to automatically insert a backslash escape character to the quotation mark character in the string:
$ Last_name = "O 'Keefe ";
$ SQL = "select * from users where last_name = '". addslashes ($ last_name )."'";
In this example, you also need to enclose single quotes (SQL syntax requirements) outside the last_name string, because the double
Quotation marks, so you do not need to use escape for this pair of single quotes. The following statement uses the equivalent form of a single quotation mark string:
$ SQL = 'select * from users where last_name = \ ''. addslashes ($ last_name ).'\'';
At any time you want to write strings in the database, you must ensure that the quotation marks correctly use escape characters. this is a lot of PHP
Common mistakes made by beginners.
IV. double quotation marks and HTML
Unlike SQL statements, double quotation marks ("double quotation marks") are often used to represent strings in standard HTML languages (many browsers currently have strong fault tolerance capabilities
Yes. you can use single quotes in HTML to represent strings without quotation marks. for example:
$ Html = ''. $ link .'';
$ Html = "$ link ";
The HTML language does not support backslash escape, which is required when the hidden inputs of the form is used for data transmission.
Experience. The best way to set the value of hidden inputs is to use the htmlspecialchars () function for encoding. The following statement can be
To transmit data that may contain double quotation marks normally:
1. define a string using quotation marks. To enclose quotation marks, the analyzer must ignore the original meaning of the regular quotation marks in a string. we add a backslash before the quotation marks to tell PHP: this quotation mark is a part of a string. the correct representation is as follows: a single quotation mark string can be used anywhere else, and the processing speed of a single quotation mark string in the script is faster, because the PHP syntax analyzer treats single quotation marks in a simple way, and the double quotation marks need to be parsed internally, it is more complicated, so the processing speed is slightly slow.
This... double quotes escape, single quotes do not escape
For example,/r/n is a line feed, but if you write a file in single quotes, it is not a line feed, but a character. if you write a file in double quotes, it is a line feed.
Agree.