PHPでは文字列の定義に英語のシングルクォーテーション「 」を使用できます。または英語の二重引用符 " "。
ただし、文字列の定義には同じ種類の一重引用符または二重引用符を使用する必要があります。たとえば、「Hello World」と「Hello World」は不正な文字列定義です。
一重引用符と二重引用符の違いは何ですか?この記事を通じてそれについて学びましょう。
1.文字列を定義します
PHP では、文字列の定義に一重引用符または二重引用符を使用できます。ただし、文字列を定義するには同じ一重引用符または二重引用符を使用する必要があります。たとえば、「Hello」と「Hello」は無効な文字列定義です。
文字列を定義する場合、一重引用符または二重引用符の 1 種類の引用符のみが区切り文字とみなされます。したがって、文字列が二重引用符で始まる場合は、二重引用符のみがパーサーによって解析されます。このようにして、二重引用符で囲まれた文字列内に他の文字 (一重引用符も含む) を含めることができます。次の引用符の文字列は有効です:
PHPコード
リーリー「なぜ「これ」は機能しないのですか?」という文字列は 3 つの段落に分かれます。この文字列で二重引用符を表現したい場合は、エスケープ文字「" (バックスラッシュ) を使用して、「なぜ "this" は機能しないのですか?」 のようにすることができます。
2. 文字列変数内の単一引用符と二重引用符
PHP では、二重引用符で囲まれた文字列に文字列変数を直接含めることができます。次の 2 つの文字列の処理結果が同じであることがわかります。
リーリー一重引用符文字列と二重引用符文字列は、PHP では異なる方法で処理されます。二重引用符で囲まれた文字列の内容は解釈して置換できますが、一重引用符で囲まれた文字列の内容は常に通常の文字とみなされます。例:
PHPコード
リーリーご覧のとおり、バックスラッシュであっても、一重引用符で囲まれた文字列ではその拡張された意味が失われます (バックスラッシュ \ の挿入と一重引用符 ' の挿入を除く)。したがって、変数置換を実行し、文字列に n (改行) などのエスケープ シーケンスを含める場合は、二重引用符を使用する必要があります。一重引用符文字列は他のどこでも使用できます。スクリプト内で一重引用符文字列を使用すると、処理速度が速くなります。これは、PHP パーサーが一重引用符文字列を比較的単純な方法で処理する一方で、二重引用符の処理も内部で解析する必要があるためです。したがって、文字列はより複雑になり、処理が若干遅くなります。
文字列内の変数の複雑な組み合わせを参照するときにいくつかの問題が発生する可能性がありますが、次のコードは正常に機能します:
PHPコード
リーリーしかし、次のコードは私たちが望む結果を得ることができません:
echo "value = $a[$i][$j]"; //二次元配列 $a の要素を出力したい。
これらの文字列の使用における潜在的な問題を回避するために、通常は次のように複雑な変数を文字列から分離します: echo 'value = ' . $a[$i][$j];//文字 接続にはドット (.) を使用します。文字列
もう 1 つの方法は、構文アナライザーがそれらを正しく識別できるように、複雑な変数を中括弧で囲むことです。
リーリーこのようにして、新たな問題が発生します。文字列内で中括弧文字自体を引用したい場合は、エスケープ文字を使用することを忘れないでください:
PHPコード
リーリー3. SQL ステートメント内
これはよく発生する問題で、データベースに挿入される SQL ステートメントでは文字列の定義に一重引用符が使用されており、一重引用符を含む文字列をデータベースに挿入すると、SQL ステートメントが間違ってしまいます。
例:
リーリーこのとき、SQL ステートメントにエスケープ文字のバックスラッシュを追加する方法があります。
つまり:...Values('O'Kefee',...
もちろん、addslashes() 関数を使用することもできます。この関数の機能はエスケープ文字を追加することです。
つまり: $s =addslashes("O'Kefee") ...Values('".$s."',...もう 1 つの方法は、php.ini で Magic-quotes オプションを設定することです。このオプションがオンになっている場合、フォームから送信された情報に一重引用符が含まれている場合、エスケープ文字が自動的に追加されます。したがって、他の機能を使用する必要はありません。
補足: これは二重引用符と一重引用符の役割から始まります。二重引用符で囲まれたフィールドはコンパイラによって解釈されて HTML コードとして出力されますが、一重引用符で囲まれたフィールドは解釈する必要がなく、出力されます。直接。
例:リーリー
そのため、データベース内の SQL ステートメントに値を割り当てるときは、二重引用符を使用する必要があります。 SQL="select a,b,c from..." ただし、フィールド名を引用するために SQL ステートメント内に一重引用符が含まれます。例:
リーリー
ここでの SQL ステートメントは SQL="select * from table where user='abc'" として直接書くことができますしかし、次のような場合:
リーリー
一重引用符と二重引用符の間にもう少しスペースを追加しました。より明確に見えることを願っています。つまり、「abc」を「.$user.」にすべて一重引用符で囲んで置き換えます。 SQL 文字列全体を分割するだけです。 SQL1 は次の 3 つの部分に分類できます
1:「user=' のテーブルから * を選択」
2:$user
3:「」
文字列を接続するには . を使用すると理解できます。
上記は、編集者が紹介した PHP のシングルクォーテーションとダブルクォーテーションの違いについての詳細な説明です。詳しく知りたい場合は、Bangkejia の Web サイトに注目してください。