【PHPプログラミング】html要素生成時に結合演算子『.』ではなく 引用符『"や'』にエスケープかける
| 更新: 2024/11/14 | 1174文字
今回は『結合演算子より引用符にエスケープかけた方がラクじゃね?』という話題です。以前は『ヒアドキュメントで書くとラク』みたいなことも書きましたが、ちょっとした要素出力には役立つかも。早速内容を確認していきましょう。
目次
大変な例~html要素生成時に結合演算子『.』でごっちゃになる
例えば『<a href="https://example.net"><img src="https://example.net/img/123.jpg" alt="画像"/></a> 』みたいなリンクで、urlとかを変数にセットして出力したい場合、結合演算子『.』でくっつけてechoするため、下のように書くことがあるかもしれません。
こんな感じで。ダブルクォート『"』とシングルクォート『'』がごっちゃになって、かなり見にくいプログラムになっています。
管理人はちょっとわかりやすいようにダブルクォート・シングルクォート間にスペース入れましたが、くっつけてたりすると勘違いして『引用符が足りなくてエラー』のようなリスクがあります。 (以前、実際に、管理人もこれでエラーをだしたことがあります。)
文字列演算子(PHPマニュアル)
https://www.php.net/manual/ja/language.operators.string.php
ちょっとわかりやすい書き方~引用符をバックスラッシュでエスケープ&{}間で変数展開
しかし、ちょっとわかりやすくなる書き方があります。jsとか他の言語でもできるんですけど、バックスラッシュ『&92;』を使って引用符をエスケープしてみます。
こんな感じで、文字列内のものとして扱いたい引用符の前にバックスラッシュをつけます。上の書き方よりはシンプルになったかなという印象。
また、PHPの仕様にもある『ダブルクォート"内の変数を{}でくくって展開』みたいなテクも使っています。
文字列(PHPマニュアル)
https://www.php.net/manual/ja/language.types.string.php
生成するhtml要素が長い場合は?→ヒアドキュメントで
以下、当サイトの過去記事です。出力要素が大きい場合とかは、ヒアドキュメントを使っても良いかもしれません。こちらでも内部で変数展開はできます。
(過去記事)ヒアドキュメント構文 ("<<<")使ってみた例~メール確認画面&入力内容などの変数渡し
https://division-web.atelier-ss-agency.com/9461/php-heredoc-example/
あとがき・まとめ
- PHPでhtml要素生成時に結合演算子『.』で作ると、引用符が多いときはややこしく、エラーリスクもあるい
- 引用符『" '』にバックスラッシュでエスケープをかけても、見通しがよくなる
まとめると、こんなところでしょうか。いつもはヒアドキュメントで書いているんですけど、1~2行くらいのちょっとしたhtml要素で、CSSのクラスや属性などが多く設定されている場合などは、バックスラッシュでエスケープも良いかもです。管理人も状況に応じて使い分けていきます。