आपके संदर्भित पृष्ठ पर मैं जो देख रहा हूं, उसमें से 24-वर्ण हेक्साडेसिमल हैं। अगर ग्राहक-आईडी अक्षरांकीय हो सकता है तो आप base_convert का उपयोग कर सकते हैं संख्या को छोटा करने के लिए। दुर्भाग्य से पूर्ण संख्या> 32 बिट है, इसलिए आपको इसे काम करने के लिए भागों में छिपाना होगा:
// 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