2015-04-04 72 views
0

輸出openssl_random_pseudo_bytes php函數不可讀的字符。openssl_random_pseudo_bytes php函數

我使用這個函數來產生一個唯一的字符串。

<?php 
header('content-type:text/plain ; charset=utf-8'); 
$uniqid=openssl_random_pseudo_bytes(30); 
echo $uniqid ; 
?> 

輸出是這樣的:

#~�p�x�6�;g�ic�-z"���:i� 
+0

爲什麼你會期望得到一個可讀的字符串?該文件沒有聲明。它只是產生一串僞隨機字節。不多,不少。沒有關於編碼的聲明,所以你只能使用它作爲8位編碼。簡而言之:這個函數並不意味着提供可讀的字符串。 – arkascha 2015-04-04 08:27:27

+1

另請注意,使用隨機字符串_does不能保證uniqueness_。 – arkascha 2015-04-04 08:29:43

回答

1

我必須使用bin2hex()函數。

<?php 
$uniqid=bin2hex(openssl_random_pseudo_bytes(30)); 
echo $uniqid ; 
?> 

此功能當然不會產生uniqid。

-1

有類似uniqid函數在PHP

你可以試試這個:

<?php 
printf("uniqid(): %s\r\n", uniqid());echo '<br>'; 
printf("uniqid('php_'): %s\r\n", uniqid('php_'));echo '<br>'; 
printf("uniqid('', true): %s\r\n", uniqid('', true));echo '<br>'; 
?> 

參考:http://php.net/manual/en/function.uniqid.php