많은 코드를 보면 문자열 내용을 담기 위해 작은 따옴표나 큰 따옴표를 사용하는 경우가 있습니다. 사실 간단히 요약하자면 큰 따옴표 안의 변수는 구문 분석이 가능하며 작은 따옴표는 절대 문자열이라는 것입니다. 아래에서 자세히 소개해드리겠습니다.
추천 튜토리얼: PHP 비디오 튜토리얼
1. 문자열 정의
PHP에서는 문자열 정의에 작은따옴표나 큰따옴표를 사용할 수 있습니다. 그러나 문자열을 정의하려면 동일한 작은따옴표 또는 큰따옴표를 사용해야 합니다. 예를 들어 'Hello' 및 'Hello'는 잘못된 문자열 정의입니다.
문자열을 정의할 때 작은따옴표나 큰따옴표 중 한 종류의 따옴표만 구분자로 간주됩니다. 따라서 문자열이 큰따옴표로 시작하면 파서는 큰따옴표만 구문 분석합니다. 이렇게 하면 큰따옴표로 묶인 문자열 내에 다른 문자(작은따옴표 포함)도 포함할 수 있습니다. 다음 인용 부호 문자열은 유효합니다:
$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';
""이것이 작동하지 않는 이유는 무엇입니까?"라는 문자열은 세 개의 단락으로 나누어집니다. 이 문자열에 큰따옴표를 표현하려면 이스케이프 문자 ""(백슬래시)를 사용하여 "Why don't "this" work?"가 될 수 있습니다.
2. 문자열 변수의 작은따옴표와 큰따옴표
PHP를 사용하면 큰따옴표 문자열에 문자열 변수를 직접 포함할 수 있습니다. 다음 두 문자열의 처리 결과가 동일하다는 것을 알 수 있습니다.
$full_name = $first_name . ' ' . $last_name; $full_name = "$first_name $last_name";
작은따옴표 문자열과 큰따옴표 문자열은 PHP에서 다르게 처리됩니다. 큰따옴표로 묶인 문자열의 내용은 해석되고 대체될 수 있지만 작은따옴표로 묶인 문자열의 내용은 항상 일반 문자로 간주됩니다. 예:
$foo = 2; echo "foo is $foo"; // 打印结果: foo is 2 echo 'foo is $foo'; // 打印结果: foo is $foo echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) echo 'foo is $foo\n'; // 打印结果: foo is $foo\n $foo = 2; echo "foo is $foo"; // 打印结果: foo is 2 echo 'foo is $foo'; // 打印结果: foo is $foo echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) echo 'foo is $foo\n'; // 打印结果: foo is $foo\n
보시다시피, 작은따옴표 문자열 내의 백슬래시도 확장된 의미를 잃습니다(백슬래시 \ 삽입 및 작은따옴표 ' 삽입 제외). 따라서 변수 대체를 수행하고 문자열에 n(개행)과 같은 이스케이프 시퀀스를 포함하려면 큰따옴표를 사용해야 합니다. 작은따옴표 문자열은 다른 곳에서 사용할 수 있습니다. PHP 파서가 작은따옴표 문자열을 비교적 간단한 방법으로 처리하는 반면 큰따옴표 처리도 내부에서 구문 분석해야 하기 때문에 스크립트에서 작은따옴표 문자열을 사용하면 처리 속도가 더 빨라집니다. 따라서 더 복잡하므로 처리 속도가 약간 느려집니다.
문자열에서 복잡한 변수 조합을 참조할 때 일부 문제가 발생할 수 있습니다. 다음 코드는 정상적으로 작동합니다.
echo "value = $foo"; echo "value = $a[$i]"; echo "value = $foo"; echo "value = $a[$i]";
그러나 다음 코드는 우리가 원하는 결과를 얻을 수 없습니다.
echo "value = $a[$i][$j]"; //我们希望打印二维数组$a的某个元素。
이러한 문자열을 사용하지 않으려면 일반적으로 에서 잠재적인 문제가 발생합니다. 다음과 같이 복잡한 변수를 문자열에서 분리합니다.
echo 'value = ' . $a[$i][$j];//字符串的连接用点(.)
또 다른 방법은 복잡한 변수를 중괄호로 묶어 구문 분석기가 올바르게 식별할 수 있도록 하는 것입니다.
echo "value = {$a[$i][$j]}" //打印二维数组$a的某个元素
3. SQL 문에서
이것은 데이터베이스에 삽입된 SQL 문은 작은따옴표를 사용하여 문자열을 정의합니다. 작은따옴표가 포함된 문자열을 데이터베이스에 삽입하려는 경우 이 SQL 문은 오류를 발생시킵니다.
예:
$sql="insert into userinfo (username,password) Values('O'Kefee','123456')"
이때 방법 중 하나는 SQL 문에 이스케이프 문자 백슬래시를 추가하는 것입니다.
즉:...Values('O'Kefee'
,... ... Values('O'Kefee'
,……
当然也可以使用函数 addslashes(),该函数的功能就是加入转义符,
即:
$s = addslashes("O'Kefee") ……Values('".$s."',……
还有一种方法是设置php.ini中的magic-quotes选项,打开该选项,则通过表单提交的信息中如果有单引号是,将会自动加上如转义符。因此不用使用其他函数了。
补充: 这就要从双引号和单引号的作用讲起: 双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出。
例如:
$abc='I love u'; echo $abc //结果是:I love u echo '$abc' //结果是:$abc echo "$abc" //结果是:I love u
所以在对数据库里面的SQL语句赋值的时候也要用在双引号里面SQL="select a,b,c from ..." 但是SQL语句中会有单引号把字段名引出来
例如:
select * from table where user='abc';
这里的SQL语句可以直接写成SQL="select * from table where user='abc'"
$user='abc'; SQL1="select * from table where user=' ".$user." ' ";对比一下 SQL2="select * from table where user=' abc ' "또 다른 방법은 Magic-quotes 옵션을 설정하는 것입니다. php.ini를 열고 이 옵션을 켜주세요. 양식을 통해 제출된 정보에 작은따옴표가 있으면 자동으로 이스케이프 문자가 추가되므로 다른 기능을 사용할 필요가 없습니다. 추가: double의 기능부터 시작하겠습니다. 따옴표 및 작은따옴표: 큰따옴표 안의 필드는 컴파일러에 의해 해석된 후 HTML 코드로 출력되지만 작은따옴표 안의 필드는 해석될 필요가 없으며 직접 출력됩니다.
rrreee
따라서 데이터베이스의 SQL 문에 값을 할당할 때도 큰따옴표로 사용해야 합니다. 따옴표 안에는 SQL="select a,b,c from..."이 있지만 SQL에는 작은따옴표가 있습니다. 필드 이름을 인용하는 명령문 예:rrreee
여기의 SQL 문은SQL="select * from table where user='abc'"
그러나 다음과 같은 경우에는 직접 작성할 수 있습니다. 다음🎜rrreee🎜 작은따옴표와 큰따옴표 사이에 공백을 조금 더 추가했는데, 좀 더 명확하게 보실 수 있기를 바랍니다. 🎜🎜 즉, 'abc'를 '".$user."'로 바꾸는 부분이 안에 있습니다. SQL1은 다음 세 부분으로 분해될 수 있습니다. "select * from table where user =' "🎜🎜 2: $user 🎜🎜 3: " ' "🎜🎜 을 사용하여 문자열을 연결할 수 있습니다. 🎜위 내용은 PHP 작은따옴표 및 큰따옴표 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!