sql >> Databasteknik >  >> NoSQL >> MongoDB

Komprimera (förkorta) PHP-sträng från 24 tecken till 20

Enligt vad jag ser på din refererade sida är de 24 tecknen hexadecimala. Om kund-id kan vara alfanumeriskt kan du använda base_convert för att förkorta numret. Tyvärr är hela numret> 32bit så du måste dölja det i delar för att få det att fungera:

// 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 



  1. Ska jag använda Java String Pool för synkronisering baserat på unikt kund-id?

  2. Bestående data från Redis till MongoDB för datalagring

  3. MongoDB HostName/URI-konfiguration

  4. Inbyggt förarfynd från Mongoose-modellen returnerar inte markören