浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【PHP】接頭辞、接尾辞を付与する関数を二重適用に対して安全にする

 文字列操作で二重に操作するとバグるコードがあるとします。この処理でよくあるのは次の様な URL でしょう。

https://example.com/{$path}
https://example.com/https://example.com/{$path}

そういった時、フロー完全に把握しなくとも安全に文字列操作をする方法があります。それが次です。

<?php
function enclose_str($prefix,$str,$postfix){
  if(strpos($str, $prefix) !== 0){
     $str = $prefix.$str;
  }
  if(strpos($str, $postfix) !== strlen($str) - strlen($postfix)){
     $str = $str.$postfix;
  }
  return $str;
}

$a = 'bbb';
$a = enclose_str('aaa',$a,'ccc');
$a = enclose_str('aaa',$a,'ccc');
$a = enclose_str('aaa',$a,'ccc');
$a = enclose_str('aaa',$a,'ccc');
$a = enclose_str('aaa',$a,'ccc');
$a = enclose_str('aaa',$a,'ccc');

echo $a;// aaabbbccc

 あらかじめ既に接頭辞、接尾辞がついているか確認して文字列のつけたしの有無を制御します。ちょっとした工夫ですが案外便利です

  • この記事いいね! (0)