ホームページ バックエンド開発 PHPチュートリアル PHP の一重引用符と二重引用符の違い_PHP チュートリアル

PHP の一重引用符と二重引用符の違い_PHP チュートリアル

Jul 21, 2016 pm 03:42 PM
php そして 使用 違い アポストロフィ できる 存在する 意味 引用符

1.文字列を定義する

PHPでは文字列の定義にシングルクォーテーションまたはダブルクォーテーションを使用できます。ただし、文字列を定義するには同じ一重引用符または二重引用符を使用する必要があります。たとえば、「He​​llo」と「Hello」は無効な文字列定義です。
文字列を定義する場合、単一引用符または二重引用符の 1 種類の引用符のみが区切り文字として考慮されます。したがって、文字列が二重引用符で始まる場合は、二重引用符のみがパーサーによって解析されます。このようにして、二重引用符で囲まれた文字列内に他の文字 (一重引用符も含む) を含めることができます。次の引用文字列は有効です:
Php コード

コードをコピー コードは次のとおりです:

$s = "私は二重引用符文字列内の '単一引用符文字列' です。"; ' 私は単一引用符文字列の中にある「二重引用符文字列」です';
$s = "私は二重引用符文字列の中の「二重引用符文字列」です";一重引用符文字列';


「なぜ「これ」は機能しないのか?」という文字列は 3 つの段落に分割されます。この文字列で二重引用符を表現したい場合は、エスケープ文字「" (バックスラッシュ) を使用して、「なぜ "this" は機能しないのですか?」 のようにすることができます。


2. 文字列変数内の単一引用符と二重引用符
PHP では、二重引用符の文字列の中に文字列変数を直接含めることができます。 次の 2 つの文字列の処理結果が同じであることがわかります。

コードをコピーします
コードは次のとおりです: $full_name = $first_name . $last_name = "$first_name $last_name";
PHP の引用文字列 処理は同じではありません。二重引用符で囲まれた文字列の内容は解釈して置換できますが、一重引用符で囲まれた文字列の内容は常に通常の文字とみなされます。例:
Php コード


コードをコピー

コードは次のとおりです:
$foo = 2; echo "foo is $foo" // 結果を出力します: foo is 2 echo 'foo is $foo'; // 出力結果: foo は $foo
echo "foo is $foon"; // 出力結果: foo は 2 (改行あり)
echo 'foo は $foon' // 出力結果: foo は$foon
$ foo = 2;
echo "foo is $foo"; // 結果を出力: foo は 2
echo 'foo is $foo' // 結果を出力: foo は $foo
echo " "; // 印刷結果: foo is 2 (with newline)
echo 'foo is $foon'; // 印刷結果: foo is $foon


ご覧のとおり、一重引用符文字列ではバックスラッシュさえも失われていますその拡張された意味 (バックスラッシュ \ の挿入および一重引用符 ' の挿入に加えて)。したがって、変数置換を実行し、文字列に n (改行) などのエスケープ シーケンスを含める場合は、二重引用符を使用する必要があります。一重引用符文字列は他の場所でも使用できます。スクリプト内で一重引用符文字列を使用すると、処理速度が速くなります。これは、PHP パーサーが一重引用符文字列を比較的単純な方法で処理する一方で、二重引用符の処理には文字列内の解析も必要となるためです。したがって、より複雑になり、処理が若干遅くなります。
文字列内の変数の複雑な組み合わせを参照する場合、いくつかの問題が発生する可能性があります。次のコードは正常に機能します。
Php コード


コードをコピーする

コードは次のとおりです。 echo "value = $a[$i]";
echo "value = $foo"; echo "value = $a[$i]" 次のコードは必要な結果を取得できません: echo " value = $a[$i][$j]"; //二次元配列 $a の要素を出力したい。
これらの文字列の使用における潜在的な問題を回避するために、通常は次のように複雑な変数を文字列から分離します: echo 'value = ' . $a[$i][$j];//文字 接続にはドット (.) を使用します。文字列
もう 1 つの方法は、構文アナライザーがそれらを正しく識別できるように、複雑な変数を中括弧で囲むことです。
echo "value = {$a[$i][$j]}" //2 つの要素を出力します。次元配列 $a
このようにして、新たな問題が発生します。文字列内で中括弧文字自体を引用したい場合は、エスケープ文字を使用することを忘れないでください:
Php コード


コードをコピー

コードは次のとおりです:


$var = 3; "value = {$var}"; // 結果を出力します "value = 3"
echo "value = {$var}" // 結果を出力します "value = {3}"
$var = 3; = {$ var}"; // 結果を出力します "value = 3"
echo "value = {$var}"; // 結果を出力します "value = {3}"

3. SQL ステートメントの場合

これはよく発生する問題です。データベースに挿入される SQL ステートメントでは、一重引用符を含む文字列をデータベースに挿入する必要があります。発言は間違ってしまいます。
例: $sql="insert into userinfo (username,password) Values('O'Kefee','123456')"
このときの処理方法の1つは、SQL文にエスケープ文字のバックスラッシュを追加することです
つまり:...Values('O'Kefee',...
もちろん、addslashes() 関数を使用することもできます。この関数の機能はエスケープ文字を追加することです。
つまり: $s = addlashes("O'Kefee") … …Values('".$s."',...
もう 1 つの方法は、php.ini でマジッククオート オプションを設定することです。このオプションがオンになっている場合、フォームを通じて送信された情報に一重引用符が含まれている場合、エスケープ文字が自動的に追加されるため、他の関数を使用する必要はありません。
追加: これは二重引用符と一重引用符の役割から始まります。コンパイラによって解釈され、HTML コードとして出力されます。ただし、一重引用符内の単語は説明する必要がなく、直接出力されます。
例:
コードをコピーします。 コードは次のとおりです。
$abc='私はあなたを愛しています';
echo $abc //結果は次のようになります: 私はあなたを愛しています
echo '$abc' // 結果は次のようになります: $abc
echo "$abc" // 結果は次のようになります:愛しています


したがって、データベース内の SQL ステートメントに値を割り当てるときは、SQL= を二重引用符で囲んで使用する必要があります。ただし、SQL ステートメントには単一引用符が含まれます。フィールド名を引用符で囲みます
例: select * from table where user='abc';
ここでの SQL ステートメントは、SQL=" select * from table where user='abc'" として直接書くことができます
ただし、次のような場合以下:


コードをコピーします コードは次のとおりです:
$user='abc';
SQL1="select * from table where user=' ".$user." ';比較してください。 with
SQL2="select * from table where user=' abc ' "


一重引用符と二重引用符の間にもう少しスペースを追加しました。より明確に見えることを願っています。
つまり、「abc」を「.$user.」にすべて一重引用符で囲んで置き換えます。 SQL 文字列全体を分割するだけです。 SQL1 は次の 3 つの部分に分解できます
1: "select * from table where user=' "
2: $user
3: " ' "
を使用して文字列を接続すると理解できます。

1. 引用符は文字列を定義します

PHP では、通常、文字列は次のように 2 つの引用符で定義されます。
'I am a string in single quotes'
"I am a string in double quotes"
PHP パーサーは、引用符のペアを使用して文字列を決定します。したがって、すべての文字列で同じ単一引用符または二重引用符を使用して開始と終了を定義する必要があります。たとえば、次の文字列定義は不正です:
「一致しない引用符があるので、私は有効な文字列ではありません'
'Me none!
」 文字列を定義する場合、区切り文字としてみなされるのは 1 種類の引用符だけです。一重引用符または二重引用符。したがって、文字列が二重引用符
で始まる場合、二重引用符のみがパーサーによって解析されます。このようにして、二重引用符で囲まれた文字列内に他の文字 (一重引用符
記号も含む) を含めることができます。次の引用符文字列は有効です:
$s = "私は二重引用符文字列の中の「単一引用符文字列」です";
$s = '私は一重引用符文字列の中の「二重引用符文字列」です';文字列の先頭に対応する引用符に遭遇すると、文字列の末尾に達したと考えられるため、次のようになります。
「なぜ "this" は機能しないのですか?
実際には、PHP パーサーによって 3 つの部分に分割されます。 :
"なぜ " - 一重引用符を含む二重引用符で囲まれた文字列
this - 余分な文字、パーサーは処理できません
" が機能しないのですか?" - 通常の文字列
上記の例は二重引用符で囲まれた文字列 Double を含めようとしています引用符で囲まれており、パーサーは 2 番目の二重引用符に遭遇したときに文字列が終了しているとみなします。引用符を含めるという目的を達成するには、文字列内で通常の引用符が見つかった場合、パーサーはその元の意味を無視する必要があります。引用符
の前にバックスラッシュを追加して、この引用符は文字列の一部であることを PHP に伝えます。は次のとおりです:
「なぜ "that" は機能しないのですか?」
英語の文字列でよくある問題は、アポストロフィ ' の使用です。これは単一引用符であり、英語の文字列では非常に一般的です
(英語の所有格) 。これらの文字には注意する必要があります:
'アポストロフィはエスケープしたほうがよい'
文字列の中でバックスラッシュ自体が特別な意味を持っていることがわかります。文字列にバックスラッシュ自体を含める必要がある場合は、
余分なものを追加する必要があります。この記号の前にバックスラッシュを付けます。例:
$file = "c:windowssystem.ini";
echo $file; // 出力される結果は次のようになります: c:windowssystem.ini
$file = "c:\windows\system.ini"; file; //出力結果は次のとおりです: c:windowssystem.ini
文字列を定義する別の方法。これにより、特殊文字の問題がなくなり、長いテキストの引用が容易になります。文字列定義メソッドは <<< 記号で始まり、その後にカスタム文字列が続き、最後の行はカスタム文字列で終わり、ボックス内にある必要があります。


2. 文字列接続



$first_name = 'Charlie'; $full_name = $first_name のように、文字列コネクタ (.) を使用して接続できます。 . $last_name;
一般的な使用法は、HTML 文字列コードの大きなブロックを作成することです。次のように、割り当て記号 (=) と接続記号 (.) を (.=) 記号
に結合できます。 html = '<テーブル>';
$html .= '番号正方形'; 0 ; $i$square = $i;
$html .= ' ' . $square . '';
$html .= ''; この機能により、次のことが可能になります。連結記号を使用して、多数の単純な文字列を結合します。 PHP では、二重引用符で囲まれた文字列に文字列変数を直接含めることができます。次の 2 つの文字列の処理結果が同じであることがわかります。
$full_name = $first_name . ' ' . $last_name;
$full_name = "$first_name $last_name";
一重引用符文字列と二重引用符文字列は、PHP では異なる方法で処理されます。二重引用符で囲まれた文字列の内容は解釈および置換できますが、一重引用符で囲まれた
文字列の内容は常に通常の文字とみなされます。例:
$foo = 2;
echo "foo is $foo"; // 結果を出力: foo は 2
echo 'foo is $foo' // 結果を出力: foo は $foo
echo " foon "; // 印刷結果: foo is 2 (with newline)
echo 'foo is $foon'; // 印刷結果: foo is $foon
ご覧のとおり、単一引用符の文字列ではバックスラッシュさえも使用されていません。拡張された意味 (バックスラッシュ \ の挿入と単一の
引用符 ' の挿入を除く)。したがって、変数置換を実行し、文字列に n (改行文字) などのエスケープ シーケンスを含める場合は、二重引用符 を使用する必要があります。一重引用符文字列は他の場所でも使用できます。スクリプト内で一重引用符文字列を使用すると、処理速度が速くなります。これは、PHP パーサーが一重引用符文字列を比較的単純な方法で処理する一方で、二重引用符の処理には文字列内の解析も必要となるためです。 , より複雑になるため、処理速度は若干遅くなります。
文字列内の変数の複雑な組み合わせを参照する場合、いくつかの問題が発生する可能性があります。次のコードは正常に動作します。
echo "value = $a[$i]";望む結果が得られません:
echo "value = $a[$i][$j]"; //2 次元配列 $a の要素を出力したいとします。
文字列を使用する際のこれらの潜在的な問題を回避するには、通常、次のように、複雑な変数を文字列から分離します。パーサーが中括弧を正しく識別できるようにするため:
echo "value = {$a[$i][$j]}" //2 次元配列の特定の要素を出力 $a element
このようにして、新たな問題が発生します。文字列内で中括弧文字自体を引用したい場合は、必ずエスケープ文字を使用する必要があります。
$var = 3;
echo "value = {$var}"; // 結果を出力します。 "
echo "value = {$var}"; // Print result "value = {3}"


3. スラッシュと SQL ステートメント


HTML コードや SQL クエリ ステートメントの生成は、PHP プログラムや SQL ステートメントを作成するときによく発生します。興味深いことですね。なぜこのようなことを言うかというと、
別のタイプのコードの生成が含まれるため、このタイプのコードに必要な
記述構文とルールを注意深く検討して従う必要があるからです。 例を見てみましょう。データベース内の名前が「O'Keefe」であるユーザーをクエリしたい場合、通常の SQL ステートメント は次のようになります。
select * from users where last_name = 'O'Keefe'
注意してください SQL ステートメント内の英語の所有文字 (アポストロフィ) はバックスラッシュでエスケープする必要があります。 PHP には、このような状況に対処するための関数がいくつか用意されています。関数 AddSlashes($str) は、文字列内の引用文字にバックスラッシュ エスケープ文字を自動的に挿入するために使用されます。 last_name = '" .addslashes($last_name) . "'";
この例では、last_name 文字列の外側を一重引用符で囲む必要もあります (SQL 構文要件)。ここで使用するのは二重
引用符文字列であるため、単一引用符のペアをエスケープする必要はありません。次のステートメントは、単一引用符で囲まれた文字列を使用するのと同じです:
$sql = 'select * from users where last_name = '' .addslashes($last_name) '';
データベース文字列に単語を書き込む場合、内部の引用符がエスケープ記号を正しく使用していることを確認する必要があります。これは、多くの PHP
初心者が犯しやすい間違いです。


4. 二重引用符と HTML


SQL ステートメントとは異なり、二重引用符は標準 HTML 言語で文字列を表すためによく使用されます (多くのブラウザーには強力なフォールト トレランス機能が備わっており、一重引用符を使用することさえできません)文字列を表すには引用符)、例:
$html = ''.$link.''; href="$url">$link";
HTML 言語はバックスラッシュのエスケープをサポートしていません。これは、フォームの非表示の入力を使用してデータを送信するときに発生します。非表示の入力の値を設定する最良の方法は、htmlspecialchars() 関数を使用してエンコードすることです。次のステートメントは、
通常、二重引用符を含む可能性のあるデータを送信できます:

1.弦。引用符を含めるという目的を達成するには、文字列内で通常の引用符が見つかった場合、パーサーはその元の意味を無視する必要があります。これは、この引用符が文字列の一部であり、引用符であることを PHP に伝えるためです。正しい表現は次のとおりです。一重引用符文字列は他の場所でも使用できます。PHP パーサーは一重引用符文字列を比較的単純な方法で処理するため、二重引用符文字列を使用すると処理速度が速くなります。引用符は文字列の内部的な性質によるもので、解析も必要となるため、より複雑になるため、処理速度が若干遅くなります。

これ...二重引用符はエスケープされますが、一重引用符はエスケープされません
例: /r/n は改行ですが、一重引用符を使用してファイルを記述すると、それは改行ではなく文字になります。二重引用符を使用すると、ファイルへの書き込みは改行を意味します
同意します。



http://www.bkjia.com/PHPjc/320827.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/320827.html

技術記事

1. 文字列を定義する PHP では、一重引用符または二重引用符を使用して文字列を定義できます。ただし、文字列を定義するには同じ一重引用符または二重引用符を使用する必要があります (例: 'Hello" と...

)
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの未来:適応と革新 PHPの未来:適応と革新 Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPの現在のステータス:Web開発動向を見てください PHPの現在のステータス:Web開発動向を見てください Apr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHP:多くのウェブサイトの基礎 PHP:多くのウェブサイトの基礎 Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

See all articles