[解決済み] ベストプラクティス: PHP で複数行の長い文字列を扱うには?
2022-04-16 04:17:03
質問
注:非常に簡単な質問で申し訳ないのですが、私は自分のコードの書式に多少強迫観念があるのです。
あるクラスで、電子メールの本文を構成する文字列を返す関数があります。このテキストは、電子メールで正しく表示されるようにフォーマットして欲しいのですが、私のコードが変な感じにならないようにするためでもあります。以下がその例です。
class Something
{
public function getEmailText($vars)
{
$text = 'Hello ' . $vars->name . ",
The second line starts two lines below.
I also don't want any spaces before the new line, so it's butted up against the left side of the screen.";
return $text;
}
}
と書くこともできますが
public function getEmailText($vars)
{
$text = "Hello {$vars->name},\n\rThe second line starts two lines below.\n\rI also don't want any spaces before the new line, so it's butted up against the left side of the screen.";
return $text;
}
が、改行とキャリッジリターンはどうなっているのでしょうか?何が違うのでしょうか?は
\n\n
と同等です。
\r\r
または
\n\r
? 行間を空ける場合、どちらを使えばいいのでしょうか?
それから、出力バッファリングとheredoc構文というオプションがあります。
オブジェクトの中で長い複数行の文字列を使用する場合、どのように対処していますか?
どのように解決するのですか?
を使用する必要があります。
heredoc
または
nowdoc
.
$var = "some text";
$text = <<<EOT
Place your text between the EOT. It's
the delimiter that ends the text
of your multiline string.
$var
EOT;
との違いは
heredoc
と
nowdoc
は、PHPコードが
heredoc
は実行されますが
nowdoc
はそのまま出力されます。
$var = "foo";
$text = <<<'EOT'
My $var
EOT;
この場合
$text
は値を持つことになります。
"My $var"
ではなく
"My foo"
.
注意事項
-
クロージング前
EOT;
にはスペースやタブを入れてはいけません。そうしないと、エラーが発生します。 -
文字列/タグ (
EOT
) は任意であり、他の文字列、例えば<<<FOO
とFOO;
- EOT : 送信終了、EOD : データ終了。 [ Q ]
関連
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み] JavaScriptで複数行の文字列を作成する
-
[解決済み] PHPでユーザー入力をサニタイズするにはどうすればよいですか?
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み] 文字列を複数の単語境界のデリミタで単語に分割する
-
[解決済み] Goで複数行の文字列はどのように書くのですか?
-
[解決済み] jQueryでHTML文字列をエスケープする
-
[解決済み] Javaは複数行の文字列をサポートしていますか?
-
[解決済み] 複数行の文字列の適切なインデント?
-
[解決済み】PHPUnitでprotectedメソッドをテストするためのベストプラクティス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み】PHPで複数行の文字列