文字列操作で二重に操作するとバグるコードがあるとします。この処理でよくあるのは次の様な 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
あらかじめ既に接頭辞、接尾辞がついているか確認して文字列のつけたしの有無を制御します。ちょっとした工夫ですが案外便利です