Từ những gì tôi thấy trên trang được tham chiếu của bạn, 24 ký tự là hệ thập lục phân. Nếu id khách hàng có thể là chữ và số, bạn có thể sử dụng base_convert để rút ngắn số. Thật không may, con số đầy đủ là> 32bit, vì vậy bạn cần phải giấu nó thành từng phần để làm cho nó hoạt động:
// Pad with 0's to make sure you have 24 chars
$padded = str_repeat('0', 24 - strlen($mongoId)) . $mongoId;
$leastSignificant = base_convert(substr($padded, 14, 10), 16, 32); // will be 8 chars most
$middleSignificant = base_convert(substr($padded, 4, 10), 16, 32); // will be 8 chars most
$highSignificant = base_convert(substr($padded, 0, 4), 16, 32); // will be 4 chars most
// Concatenate, and make sure everything is correctly padded
$result = str_repeat('0', 4 - strlen($highSignificant)) . $highSignificant .
str_repeat('0', 8 - strlen($middleSignificant )) . $middleSignificant .
str_repeat('0', 8 - strlen($leastSignificant )) . $leastSignificant;
echo strlen($result); // Will echo 20
// Reverse the algoritm to retrieve the mongoId for a given customerId