★ 今日はこんな記事も読まれています ★

まだデータがありません。

javascript や PHP ではシングルクォーテーションを使うのはなぜ?

2017年3月30日HTML/CSS

クォーテーション、シングルとダブルの違い

HTMLでよく用いられている引用符「ダブルクォーテーション」。<a href="http://~.html"~>こんな風につかいますよね。

一方、javascript や PHP では ' シングルクォーテーションが使われることが多いですよね。

どちらで書けばいいのか疑問に感じたことはありませんか?

HTMLなら<a href="http://yaruzou.net"> でも <a href=’http://yaruzou.net’>でも、きちんとリンクとして機能します。

javascriptも同じく、シングルクォーテーション ' でもダブルクォーテーション  でも動きます。

ではなぜHTMLは ダブルクォーテーションを使い、javascript のようなスクリプトは ' を使うのかというと利便性の問題です。

たとえばjavascriptでURLを入れてある"site_url"という変数を使ってHTMLとして表示したい時に、HTMLは ダブルクォーテーションと決めておくと楽なんです。

var site_url='yaruzou.net';
document.getElementById('link').innerHTML ='<a href="'+site_url+'">';

<a href="http://yaruzou.net">//結果

文字列の赤太字の部分は文字列として ' でくくって、HTML内で使われる は文字列として使っています。

 

厳密に使い分けなければいけないこともある

javascriptでもphpでも、通常は構造が維持できていればシングルクォーテーション・ダブルクォーテーションどちらでも使えます。

しかしシングルとダブルを使い分けなければいけないケースもあります。

たとえば php なら '文字列だよ’ でも “文字列だよ" でも同じく文字列として扱われますが、特殊文字だけは挙動が異なります。

phpでの使い分け

phpでは改行記号 \r\n を echo '\r\n’; としても改行されません。ダブルクォーテーション echo “\r\n"; ならきちんと改行されます。

echo '\r\n';  //シングルクォーテーションは改行コードにならない
echo "\r\n"; //ダブルクォーテーションなら改行される

なぜ違いが出るかというとシングルクォーテーション ' 内を文字列として扱うという PHP の仕様のためです。分割するときも同じで、explodeで’\r\n’ を使っても機能しません。

逆にダブルクォーテーションでくくった “\r\n" で \r\n を文字として表示させたければ、\\r\\nのようにエスケープ(特殊文字無効化)する必要があります。

その他のケース

その他、jQueryプラグインなどでも、シングルとダブルを区別することもあるので、確認したほうがいいケースもあります。

稀な例としては Shift + @ キーで表示される バッククォート ` が使われることもあります。

 

まとめ

まとめると

  • HTMLではダブルクォーテーション・シングルクォーテーションどちらでもいい
  • javascript や php では基本的にどちらでも使えるが、扱いが異なることがある

ということです。

ダブルとシングルの使い方は人によっても違ったりするので、最初のうちは迷いますよね。