ショコラ
PHP 先頭文字の確認方法
なんとなく、文字列の先頭文字の比較で str_starts_with関数 を使ってしまったけど、先頭の文字は $str[0] でも取得することができる。どちらがいいのか確認しようと思いました。
もっさん先輩
少し前に、文字列の先頭が / から始まっているかを確認する処理をなんとなく書きました。
<?php
function a(string $str) {
return str_starts_with($str,'/');
}
echo a('/abc/def');
そうえいば、文字列の先頭の文字は[0]で取得できるよなぁと思いました。
<?php
function a(string $str) {
return ('/' == $str[0]);
}
echo a('/abc/def');
大体は動きますけど、これには違いがありました。
①空文字の場合、[0]のやり方だと警告がでます。str_starts_with では警告はでません。
<?php
function a(string $str) {
return ('/' == $str[0]);
}
echo a('');
PHP Warning: Uninitialized string offset 0 in a.php on line 3
<?php
function a(string $str) {
return str_starts_with($str,'/');
}
echo a('');
②マルチバイトの場合、[0]のやり方だと false になります。str_starts_with だと true になります。
<?php
function a(string $str) {
return ('あ' == $str[0]);
}
echo a('あいうえお');
<?php
function a(string $str) {
return str_starts_with($str,'あ');
}
echo a('あいうえお');
そういうことに気を付けて、プログラムしましょうというお話でした。
きっと、str_starts_with 以前は substr や mb_substr の処理だったのだと思いました。ワーニングはでません。
<?php
function a(string $str) {
echo ('/' == substr($str,0,1));
}
以上