2010-12-28 12 views
0

をキャプチャしている:のob_start()は、部分的に、私は次のコードを使用していたデータ

PHP:

// Generate Guid 
function NewGuid() { 
    $s = strtoupper(uniqid(rand(),true)); 
    $guidText = 
     substr($s,0,8) . '-' . 
     substr($s,8,4) . '-' . 
     substr($s,12,4). '-' . 
     substr($s,16,4). '-' . 
     substr($s,20); 
    return $guidText; 
} 
// End Generate Guid 

$Guid = NewGuid(); 

$alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';  

function base_encode($num, $alphabet) { 
    $base_count = strlen($alphabet); 
    $encoded = ''; 

    while ($num >= $base_count) { 

     $div = $num/$base_count; 
     $mod = ($num-($base_count*intval($div))); 
     $encoded = $alphabet[$mod] . $encoded; 
     $num = intval($div); 
    } 

    if ($num) $encoded = $alphabet[$num] . $encoded; 
     return $encoded; 
} 


function base_decode($num, $alphabet) { 
    $decoded = 0; 
    $multi = 1; 

    while (strlen($num) > 0) { 
     $digit = $num[strlen($num)-1]; 
     $decoded += $multi * strpos($alphabet, $digit); 
     $multi = $multi * strlen($alphabet); 
     $num = substr($num, 0, -1); 
    } 

    return $decoded; 
} 

// Ob start 
ob_start(); 
echo base_encode($Guid, $alphabet); //should output: bUKpk 
$theid = ob_get_contents(); 
ob_get_clean(); 

問題:

I echo $theidが、それは完全なエントリを示して

、それとしてがデータベースに挿入されているときは、シーケンス内の最初のエントリだけが挿入されます(たとえば、エントリbuKPKの場合)。残りの部分は 'b'だけが挿入されています。

+0

私はこれを実行すると期待される結果が得られます。 – DampeS8N

+0

私はその特定のコードでob_startの回避策の目的について混乱させました。結果を直接割り当てるのではなく、なぜ「エコー」しますか? – mario

+0

私はちょうど彼が問題を分離するためにコードを単純化していると仮定しました。 – DampeS8N

答えて

4

チェック、データベース内の文字の長さ(すなわち、それはVARCHAR(10)あなたはその分野で10個の以上の文字を格納していないことを確認している場合)

+0

それはトリックをしました、私はint()varcharの代わりに使用していた...ありがとうshankhan。 – AAA

2

ob_get_clean()ではなくob_end_clean()を使用してみてください。連続してob_start()を呼び出すと、「ネストされた」バッファリングコンテキストが作成されます。 ob_get_clean()は現在のコンテキストを取得してクリアしますが、終了しません。したがって、ob_start()への2回目の呼び出しによって、2番目のネストされたバッファリングコンテキストが作成されます。この場合、出力バッファをキャプチャしてキャプチャコンテキストを終了したいだけです。

+0

Chrisに感謝します。それを使用すると、実際には2番目の文字を取得することができますが、それ以降は何もありません。 – AAA

関連する問題