PHP 先頭文字の確認方法

ショコラ
ショコラ

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));
}

以上

Scroll to Top