PHPでHTMLを生成する時のデバッグ方法

サイトの紹介と使い方動画


created: 2021/08/30 modified: 2021/09/14

初めに

①ショートコードをテーマ「Cocoon」の「child」テーマのfunctions.phpにコーディングしていますが、バグると自分のWordPressが壊れたかと思うくらい被害を受けることがあります。
②バグルのは仕方が無いとして、その被害を少なくしようと思いました。
③この記事は、ショートコードでHTMLを掃き出す場合のデバッグ方法の一つです。
④なんといっても、ショートコードの中でEcho文が使えないことが大きいです。

コードの細工

  $ret  = "<!-- wp:code -->";
  $ret .= "<pre class=\"wp-block-code\"><code>";
  $ret .= "&lta href=\"";
  $ret .= my_get_homepage();
  $ret .= "/\"&gtMenu&lt/a&gt";
  $ret .= "</code></pre>";
  $ret .= "<!-- /wp:code -->";

次の方法でHTMLを実行しないコードに変換します。
①実HTMLコードの頭に、次の2文を置きます。
$ret = "<!-- wp:code -->";
$ret .= "<pre class=\"wp-block-code\"><code>";
②後ろに次の2文を置きます。
$ret .= "</code></pre>";
$ret .= "<!-- /wp:code -->";
③実HTMLの中の特殊記号をエスケープ文字に置き換えます。
エスケープ文字については後述します。
④この方法で、目視での確認しかできませんが、ショートコードでHTMLが掃き出しやすくなりました。
⑤$ret変数は、筆者が勝手に作ったものです。

エスケープ文字

①記号であっても漢字であっても、コンピュータが理解するためには1文字ごとにコード(数値)が必要になります。
②厳密に言うと違いますが、エスケープ文字は目に見える(表示される)漢字とコード(数値)の中間に位置します。
③エスケープ文字は、エスケープシーケンスやエスケープコードと呼ばれることもあります。
④以下に少しだけ例を載せます。
尚、筆者がショートコードを書く時に、引っかかったのは「<」「>」の2つでした。
もっとあるかもしれません。

エスケープ文字「&lt」と 「<」は、コンピュータにとっては同じものです。
エスケープ文字「&gt」と 「>」は、コンピュータにとっては同じものです。

特殊なエスケープ文字

①「''」「""」で挟まれた間が文字列と認識されます。
②筆者は、「""」だけを使っているので、そのケースを説明します。
③「""」の中に「"」を記述したい場合を考えます。
④普通に「"」を記述すると、文字列の終わりだとPHPに認識されてしまいます。
⑤そこで、エスケープ文字「\"」を使用します。
⑥これで、文字列の終わりだと認識されずに「"」を記述できます。
⑦パソコンやキーボードによっては、「\」(バックスラッシュ)ではなく「¥」記号の時もありますが、両方ともに同じものです。

上手く動かない時

「コードの細工」で頭と後ろに追加した2行づつを消せば、実HTMLは動くはずです。
ところが、筆者は動かないケースに遭遇しました。
対処は次の2つでした。
①エスケープ文字を元に戻しました。
「&lt」を「<」に、「&gt」を「>」に戻しました。
②頭と後ろに次の2行を加えました。
<!-- wp:html -->
<!-- /wp:html -->

メールアドレス:

お問合せ・御要望

  • お問合せ
  • トップへ戻る
    タイトルとURLをコピーしました