Differences between single quotes and double quotes in php and their usage

Source: Internet
Author: User

In PHP, a string is usually defined in a pair of quotation marks.

Follow these steps:

The code is as follows: Copy code

$ Out = str_replace (array ('RN ', 'R', 'n'), '', $ out); PHP provides three methods to define strings: single quotes, double quotes, and local documents (here document or heredoc ).

Single quotes:
Using single quotes is the most efficient method, because PHP does not check the built-in variables and escape sequences in single quotes. Only the backslash and single quotes must be escaped.

Double quotation marks:
Checks built-in variables and escape sequences, but does not recognize the single quotation marks of escape. This also shows the error of the code. The correct method is to use double quotation marks to define the escape sequence of line breaks:

The code is as follows: Copy code
$ Out = str_replace (array ("rn", "r", "n"), '', $ out );

Local document:
Check all built-in variables and escape sequences. Double quotation marks do not need to be escaped. For example:

The code is as follows: Copy code
Echo <EOT
This is a "here document" example.
Just for test.

EOT, a simple record to deepen your impression.

Such:

The code is as follows: Copy code

'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:

 

The code is as follows: Copy code

 

"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:

The code is as follows: Copy code

$ 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:

The code is as follows: Copy code

"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:

The code is as follows: Copy code

'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:

The code is as follows: Copy code

$ File = "c: windowssystem. ini ";
Echo $ file; // The printed result is: c: windowssystem. ini.
$ File = "c: \ windows \ system. ini ";
Echo $ file; // The printed result is: c: windowssystem. ini.

Another string definition method can eliminate the troubles of special characters and facilitate reference of long texts. This string definer
Method starts with a <symbol followed by a custom string, and the last line ends with the custom string, and must be a top-level.


2. String connection

A string can be connected using a string connector (.), for example:

The code is as follows: Copy code

$ 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:

The code is as follows: Copy code

$ Html = '<table> ';
$ Html. = '<tr> <td> number </td> <td> square </td> </tr> ';
For ($ I = 0; $ I <10; $ I ++ ){
$ Square = $ I * $ I;
$ Html. = '<tr> <td>'. $ I. '</td> <td>'. $ square. '</td> </tr> ';
}
$ Html. = '</table> ';


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.

The code is as follows: Copy code

$ 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:

The code is as follows: Copy code

$ 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 $ foon"; // print the result: foo is 2 (line feed at the same time)
Echo 'foo is $ foon '; // print the result: foo is $ foon

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, 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:

The code is as follows: Copy code

Echo "value = $ foo ";
Echo "value = $ a [$ I]";

However, the following code cannot get the expected results:

The code is as follows: Copy code

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:

The code is as follows: Copy code

Echo 'value = '. $ a [$ I] [$ j];

Another way is to enclose complex variables in curly brackets so that the syntax analyzer can correctly identify them:

The code is as follows: Copy code

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:

The code is as follows: Copy code

$ 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:

The code is as follows: Copy code

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:

The code is as follows: Copy code

$ 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:

The code is as follows: Copy code

$ 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:

The code is as follows: Copy code

$ Html = '<a href = "'. $ url. '">'. $ link. '</a> ';
$ Html = "<a href =" $ url "> $ link </a> ";

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:

The code is as follows: Copy code

<Input type = hidden name = var value = "<? Php echo htmlspecialchars ($ var)?> ">

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.

Finally, let's look at other website statements.

The fields in double quotation marks are interpreted by the compiler and then output as HTML code.

''Is output directly without being interpreted in single quotes.

It can be seen from the literal meaning that single quotes are faster than double quotes.

For example:

The code is as follows: Copy code
$ Abc = 'My name is tome ';
Echo $ abc // The result is: my name is tom
Echo '$ ABC' // The result is: $ abc
Echo "$ abc" // The result is: my name is tom

Especially when using MYSQL statements, double quotation marks and single quotation marks are confusing for beginners. Here, we will give an example to describe them.

Assume that constants are used in the query conditions, for example:

The code is as follows: Copy code

Select * from abc_table where user_name = 'abc ';

The SQL statement can be written as follows:

The code is as follows: Copy code

SQLstr = "select * from abc_table where user _ name = 'abc '";

Assume that the query conditions use variables, for example:

The code is as follows: Copy code

$ User_name = $ _ REQUEST ['User _ name']; // string variable

Or

The code is as follows: Copy code

$ User = array ("name" =>$ _ REQUEST ['User _ name', "age" =>$ _ REQUEST ['age']; // array variable

The SQL statement can be written as follows:

The code is as follows: Copy code

SQLstr = "select * from abc_table where user_name = '". $ user_name. "'";

SQLstr = "select * from abc_table where user_name = '". $ user ["name"]. "'";

Comparison:

The code is as follows: Copy code

SQLstr = "select * from abc_table where user_name = 'abc '";

SQLstr = "select * from abc_table where user_name = '". $ user _ name. "'";

SQLstr = "select * from abc_table where user_name = '". $ user ["name"]. "'";

SQLstr can be divided into the following three parts:

The code is as follows: Copy code
1: "select * from table where user_name = '" // fixed SQL statement
2: $ user // variable
3 :"'"
"." Is used between 1, 2, and 3 strings "."

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.