PHP で文字列が含まれるかどうかの判定で、Windows と Linux で挙動が違っていましたので、備忘録しておきます。
文字列が含まれるかどうかの判定は、strstr で行い、含まれる位置まで必要な場合は、strpos で行い、位置判定は型も判定する === と !== を使うべきで、 == は使わないことです。
<?php
function getColorConfig($spectxt) {
$COLOR_CONFIG_D = "ff:ff:ff 00:86:00 cc:00:00";
$COLOR_CONFIG_S = "ff:ff:ff e4:00:7f cc:00:00";
if (strpos($spectxt, 'DEN ') !== false) {
return $COLOR_CONFIG_D;
}
if (strpos($spectxt, 'SAN ') != false) {
return $COLOR_CONFIG_S;
}
// 'SAN'で始まる文字列かどうかのチェック //
/* Windows (Ver5.6) では意図したとおり動く
Linux (Ver7.1) では含まれてないと判定される
PHP の 0 は FALSE も意味するので
*/
if (strpos($spectxt, 'SAN ') == 0) {
return $COLOR_CONFIG_S;
}
/* 試してないが、これは思った通りの動作をすると思う */
if (strpos($spectxt, 'SAN ') === 0) {
return $COLOR_CONFIG_S;
}
/* strpos() を strstr() に変更すれば、どちらでも意図した動作する */
if (strstr($spectxt, 'DEN ')) {
return $COLOR_CONFIG_D;
}
if (strstr($spectxt, 'SAN ')) {
return $COLOR_CONFIG_S;
}
}
PHP 比較演算子 : http://php.net/manual/ja/language.operators.comparison.php