PHP8文字列操作の極意
PHP8の文字列関数
PHP8では文字列操作がさらに簡潔に書けるようになりました。
代表的な関数として、str_contains、str_starts_with、str_ends_withがあります。
これらは文字列が特定のサブ文字列を含むか、先頭または末尾にあるかを高速に判定します。
従来のstrposを使った複雑な条件分岐を置き換えることで、可読性とパフォーマンスが向上します。
これらの関数はマルチバイト文字列に対しても正しく動作します。ただし、文字コードがUTF-8であることが前提です。
文字コードが異なる場合はmb_strposなどのマルチバイト関数を併用する必要があります。
if (str_contains($haystack, $needle)) {
// 文字列が$needleを含む
}
if (str_starts_with($haystack, $needle)) {
// 文字列が$needleで始まる
}
if (str_ends_with($haystack, $needle)) {
// 文字列が$needleで終わる
}
ヒアドキュメントと変数展開
ヒアドキュメントは<<
変数展開は通常の文字列と同様に行われ、ダブルクオートと同じ挙動をします。
エスケープシーケンスを意識せずに書ける点が魅力です。
$name = "Alice";
$greeting = <<
マルチバイト文字列とエスケープ
マルチバイト文字列に対しても正しく動作します。ただし、文字コードがUTF-8であることが前提です。
文字コードが異なる場合はmb_strposなどのマルチバイト関数を併用する必要があります。
文字列長を測る関数に注意が必要です。
エスケープはXSSやSQLインジェクションを防ぐ基本的な対策です。
$text = "こんにちは、世界!";
$length = mb_strlen($text); // 文字数を取得
$escaped = htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); // エスケープ
コメント
コメントを投稿