ホームページ php教程 php手册 PHPの一重引用符と二重引用符の違い

PHPの一重引用符と二重引用符の違い

Jun 13, 2016 pm 12:20 PM
php そして 使用 違い アポストロフィ できる 存在する 意味 引用符

1. 文字列を定義する

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

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


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

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


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

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

$full_name = $first_name 。 $full_name = "$first_name $last_name";


一重引用符文字列と二重引用符文字列は、PHP では異なる方法で処理されます。二重引用符で囲まれた文字列の内容は解釈して置換できますが、一重引用符で囲まれた文字列の内容は常に通常の文字とみなされます。例:

Php コード


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

$foo = 2; >echo "foo is $foo"; // 結果を出力します: foo は 2

echo 'foo is $foo'; // 結果を出力します: foo は $foo
echo "foo is $foon";印刷結果: foo は 2 (同時に改行)
echo 'foo is $foon'; // 印刷結果: foo は $foon
$foo = 2;
echo "foo is $; foo"; // 出力結果: foo は 2
echo 'foo is $foo'; // 出力結果: foo は $foo
echo "foo is $foon"; // 出力結果: foo は 2 (改行あり)
echo 'foo is $foon'; // 出力結果: foo is $foon


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

Php コード



コードをコピー

echo "value = $foo";

echo "value = $foo"; echo "value = $a[$i]";



次のコードでは、必要な結果を取得できません。
echo "value = $a[$i][$j ]"; //二次元配列 $a の要素を出力したい。
文字列を使用する際のこうした潜在的な問題を回避するには、通常、次のように複雑な変数を文字列から分離します: echo 'value = ' . $a[$i][$j];/ / 文字列を接続するにはドット (.) を使用します。
もう 1 つの方法は、構文アナライザーがそれらを正しく識別できるように、複雑な変数を中かっこで囲むことです。

echo "value = {$a[$i] [$j]}" // の要素を出力します。二次元配列 $a
このようにして、新たな問題が発生します。文字列内で中括弧文字自体を引用したい場合は、エスケープ文字を使用することを忘れないでください:
Php コード



コピー コード

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

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

$var = 3;

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



3. SQL ステートメント内

これは、データベースに挿入される SQL ステートメントで文字列を定義する場合によく発生する問題です。 want 一重引用符を含む文字列をデータベースに挿入すると、この SQL ステートメントでエラーが発生します。
例: $sql="insert into userinfo (username,password) Values('O'Kefee','123456')"
このとき、SQL にエスケープ文字を追加する方法もあります。ステートメント バックスラッシュ,
は:...Values('O'Kefee',...
もちろん、addslashes() 関数を使用することもできます。この関数の機能はエスケープ文字を追加することです。
は: $s =addlashes("O'Kefee") ...Values('".$s."',...
もう 1 つの方法は、php でマジッククォート オプションを設定することです。 ini. このオプションをオンにしてフォームを渡します 送信された情報にシングルクォーテーションが含まれている場合は、エスケープ文字が自動的に追加されるため、他の関数を使用する必要はありません。
追加: ダブルクォーテーションの機能から始めましょう。および一重引用符: フィールドはコンパイラーによって解釈され、HTML コードとして出力されますが、一重引用符内のフィールドは解釈される必要がなく、直接出力されます。例:

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

$abc='I love u';
echo $abc //結果は次のようになります。 love u
echo '$abc' //結果は次のとおりです:$ abc
echo "$abc" //結果は次のとおりです: 私はあなたを愛しています

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

2. 文字列接続

文字列は、次のように文字列連結文字 (.) を使用して接続できます。 >$last_name = 'Brown';
$full_name = $first_name . ' . $last_name;
一般的な使用法は、HTML 文字列コード (=) とコネクタ (.) の大きなブロックを作成することです。
$html = '

''
$html .= '
for ( $i=0 ; $i<10 ; $i ) {
$square = $i * $i; 🎜>$html .= '
number に短縮して結合できます。 td>square
' .
}
$html .= '
';


3. 文字列内で変数を使用する

この機能により、接続シンボルの使用を回避できます。多数の単純な文字列を接着すること。 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 "foo is $foon"; // 出力結果: foo は 2 (改行あり)
echo 'foo is $foon'; // 出力結果: foo は $foon
はい、単一引用符文字列内のバックスラッシュであっても、その拡張された意味は失われます (バックスラッシュ \ の挿入と単一引用符 ' の挿入を除く)。したがって、変数置換を実行し、文字列に n (改行文字) などのエスケープ シーケンスを含める場合は、二重引用符
を使用する必要があります。一重引用符文字列は他の場所でも使用できます。PHP 構文アナライザーは
一重引用符文字列を比較的単純な方法で処理するのに対し、二重引用符の処理も複雑であるため、スクリプト内で一重引用符文字列を使用すると処理速度が速くなります。文字列内を解析する必要があるため、複雑になり、処理速度が若干遅くなります。
文字列内の変数の複雑な組み合わせを参照する場合、いくつかの問題が発生する可能性があります。
echo "value = $foo";
echo "value = $a[$i ]"; 🎜> 次のコードでは、必要な結果を取得できません:
echo "value = $a[$i][$j]"; //2 次元配列 $a 要素の特定の部分を出力したいとします。
文字列を使用する際のこれらの潜在的な問題を回避するには、通常、次のように複雑な変数を文字列から分離します。
echo 'value = ' 。
別の方法は次のとおりです。複雑な変数は中括弧で囲み、パーサーがそれらを正しく識別できるようにします。
echo "value = {$a[$i][$j]}" // 2 次元配列 $a このようにして、新たな問題が発生します。文字列内で中括弧文字自体を引用したい場合は、エスケープ文字を使用することを忘れないでください。
$var = 3;
echo "value = {$var}"; // 結果を出力します。 "value = 3"
echo "value = {$var}" // 結果を出力します "value = {3}"


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

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


4. 二重引用符と HTML


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

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

これ...二重引用符はエスケープされますが、一重引用符はエスケープされません
例: /r/n は改行ですが、一重引用符を使用してファイルを作成した場合、それは改行にはなりません、ただし改行文字は、二重引用符でファイルに書き込まれる場合は改行です。
同意します。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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でHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

Deepseek R1とV3バージョンの違いは何ですか Deepseek R1とV3バージョンの違いは何ですか Feb 19, 2025 pm 03:24 PM

DeepSeek:R1とV3バージョンの詳細な比較は、最高のAIアシスタントを選択するのに役立ちます! Deepseekにはすでに数千万人のユーザーがいて、そのAIの対話機能は好評を博しています。しかし、R1およびV3バージョンに面しているときに混乱していますか?この記事では、2つの違いを詳細に説明して、最適なバージョンを選択するのに役立ちます。 DeepSeeKR1とV3バージョンのコアの違い:V3バージョンの設計目標は、複雑な問題推論、ディープロジック分析、多機能大型言語モデルに焦点を当てており、スケーラビリティと効率アーキテクチャ、パラメーター強化学習最適化アーキテクチャ、パラメータースケール1.5に焦点を当てています。 10億から700億人のMOEハイブリッドの専門家アーキテクチャ、合計パラメーターは6710億にもなり、各トークンは370億を活性化します

DeepSeek使用のためのFAQの概要 DeepSeek使用のためのFAQの概要 Feb 19, 2025 pm 03:45 PM

Deepseekai ToolユーザーガイドとFAQ Deepseekは、強力なAIインテリジェントツールです。 FAQ:異なるアクセス方法の違い:Webバージョン、アプリバージョン、API呼び出しの間に機能に違いはありません。アプリは、Webバージョンのラッパーにすぎません。ローカル展開は蒸留モデルを使用します。これは、DeepSeek-R1のフルバージョンよりもわずかに劣っていますが、32ビットモデルには理論的には90%のフルバージョン機能があります。居酒屋とは何ですか? Sillytavernは、APIまたはOllamaを介してAIモデルを呼び出す必要があるフロントエンドインターフェイスです。壊れた制限とは何ですか

ビットコインには株式がありますか? ビットコインには株式がありますか? Mar 03, 2025 pm 06:42 PM

暗号通貨市場は活況を呈しており、リーダーとしてのビットコインは多くの投資家の注目を集めています。多くの人が好奇心が強い:ビットコインには在庫がありますか?答えはノーです。ビットコイン自体は株式ではありませんが、投資家はさまざまなチャネルを通じてビットコイン関連の資産に間接的に投資することができます。これについては、この記事で詳しく説明します。ビットコイン投資の代替品:ビットコインに直接投資する代わりに、投資家はビットコイン市場に参加できます:ビットコインETF:これは、資産ポートフォリオにビットコインまたはビットコイン先物契約が含まれている株式取引市場で取引されています。これは、ビットコインを直接保持することなく、在庫投資に慣れている投資家にとって比較的便利なオプションです。ビットコインマイニングカンパニー株:これらの企業のビジネスはビットコインマイニングとビットコインの保有です

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

市場前取引とアフターマーケット取引の違いは何ですか?市場前と市場外の取引の違いの詳細な説明 市場前取引とアフターマーケット取引の違いは何ですか?市場前と市場外の取引の違いの詳細な説明 Mar 03, 2025 pm 11:54 PM

従来の金融市場では、市場前および市場外の取引とは、通常の取引期間以外の取引活動を指します。暗号通貨市場は24時間取引されていますが、Bitgetのようなトレーディングプラットフォームは、同様の機能、特に株式と暗号通貨を同時に取引する包括的なプラットフォームも提供しています。この記事では、市場前と市場の取引の違いを明確にし、通貨価格への影響を調査します。市場前取引とアフターマーケット取引の4つの大きな違い:市場前取引とアフターマーケット取引と通常の取引期間の主な違いは、取引時間、流動性、価格変動、取引量:取引時間:取引時間:公式取引が開始される前に行われる4つの側面にあります。流動性:営業時間前後の取引の流動性は低く、トレーダーはほとんどありません。

なぜビテンサーはAIトラックの「ビットコイン」と言われているのですか? なぜビテンサーはAIトラックの「ビットコイン」と言われているのですか? Mar 04, 2025 pm 04:06 PM

元のタイトル:Bittensor = Aibitcoin:S4MMYETH、分散型AI研究元の翻訳:Zhouzhou、BlockBeats編集者注:この記事では、Bockchain Technologyを通じて中央集権的なAI企業の独占を破り、オープンおよび共同AI Ecosemsytemを促進することを望んでいます。 Bittensorは、さまざまなAIソリューションの出現を可能にし、Tao Tokensを通じてイノベーションを刺激するサブネットモデルを採用しています。 AI市場は成熟していますが、両節は競争リスクに直面し、他のオープンソースの対象となる場合があります

韓国のビットコインと国内のビットコインに違いはありますか? 韓国のビットコインと国内のビットコインに違いはありますか? Mar 05, 2025 pm 06:51 PM

ビットコインの投資ブームは、世界初の分散型デジタル資産であるため、増加し続けています。中国はかつてビットコインの最大の市場でしたが、政策の影響は取引制限につながりました。今日、韓国は世界の主要なビットコイン市場の1つになっており、投資家はITとその国内ビットコインの違いに疑問を投げかけています。この記事では、両国のビットコイン市場間の違いに関する詳細な分析を行います。韓国と中国のビットコイン市場の違いの分析。たとえば、2024年10月下旬、韓国のビットコインの価格はかつてでした

See all articles