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

  • 2021年2月15日
  • 2021年2月16日
  • 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

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

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG