PHPのTipsです。
PHPの空白行削除
// 入力テキストを行に分割
// $input_lines = explode("\n", $text); // 空白行ができてしまう
// $input_lines = explode("\n", str_replace(["\r\n", "\r"], "\n", $text)); // preg_split()の代替
$input_lines = preg_split('/\R/', $text);
preg_split('/\R/', $text)
は、正規表現を使用してテキストを行に分割する PHP の関数です。
preg_split()
: 正規表現パターンに基づいて文字列を分割する PHP 関数です。/\R/
: これは正規表現パターンです。\R
は「任意の種類の改行」を表す特殊な正規表現文字です。-
\n
(LF),\r
(CR),\r\n
(CRLF) のすべてが含まれます。
\nと\r\nの違い
このあたりの知識があまりなかったため、WordPressのプラグイン開発でハマりましたね。わかってしまえば、なんてことないのですけど。
\n
(LF):Unix系、Mac\r\n
(CR+LF):Windows- 通信プロトコルはCRLF(\r\n)
スポンサーリンク
PHPとHtmlの間のスペースを削除・スペース埋め
trimしてもダメでした。単純にインデントがそのまま表示されているだけでした。
<textarea name="custom_text" id="custom_text" rows="4" maxlength="120" style="width:100%;"
><?php echo esc_textarea(trim(get_post_meta($post->ID, '_custom_text', true))); ?></textarea>
全部一行にするのも見にくいので>を前に持ってきました。
スポンサーリンク
PHPで閉じ括弧がない理由
他の言語をやっていたため、はじめてPHPを見たとき、閉じ括弧がないのが謎でした。
<?php
PHPでは、<?php
タグで開始し、?>
タグで終了しますが、ファイルの最後に ?>
タグがない場合もあります。これは、ファイルの最後が PHP コードで終わっている場合、?>
タグを省略できるためです。?>
タグの後に空白や改行があると、それらが出力されてしまい、意図しない動作を引き起こす可能性があるため、ファイルの最後が PHP コードで終わる場合は、?>
タグを省略するのが一般的な慣習となっています。
コメント