Функция strtok
сделает это за один проход, а не за два:
$hashsalt8 = strtok($hashsalt8, "\0");
Однако, начиная с PHP 4.1.0, strtok
не будет возвращать пустую строкуесли входная строка начинается с нулевого байта.Вы можете сделать следующее, чтобы обработать этот случай:
if ($hashsalt8[0] == "\0") {
$hashsalt8 = '';
}
else {
$hashsalt8 = strtok($hashsalt8, "\0");
}
Обратите внимание, что входная строка, начинающаяся с нулевого байта, также представляет ошибку в вашем текущем коде.В этом случае strpos
вернет 0
и if ($iv)
не удастся.
Вы должны использовать оператор !==
, чтобы различать 0
и false
:
$iv = strpos($hashsalt8, "\0");
if ($iv !== false) {
$hashsalt8 = substr($hashsalt8, 0, $iv);
}