sqlite_udf_decode_binary

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_udf_decode_binaryDecodifica dati binari passati come parametri in UDF

Descrizione

sqlite_udf_decode_binary ( string $data ) : string

Decodifica dati binari passati come parametri in UDF.

Occorre eseguire questa funzione sui parametri passati agli UDF se questi devono gestire dati binari, poiché la codifica dei dati binari utilizzata dal PHP nasconde il contenuto e li lascia quindi nel loro stato naturale, forma non codificata.

Il PHP non esegue questa codifica/decodifica in automatico, avrebbe impatti negativi sulle performance se lo facesse.

Elenco dei parametri

data

I dati che saranno codificati, dati risultanti dalle funzioni sqlite_udf_encode_binary() o sqlite_escape_string()

Valori restituiti

La string decodificata.

Esempi

Example #1 Esempio di una funzione di aggregazione lunghezza_massima binary-safe

<?php
$data 
= array(
   
'one',
   
'two',
   
'three',
   
'four',
   
'five',
   
'six',
   
'seven',
   
'eight',
   
'nine',
   
'ten',
   );
$db sqlite_open(':memory:');
sqlite_query($db"CREATE TABLE strings(a)");
foreach (
$data as $str) {
    
$str sqlite_escape_string($str);
    
sqlite_query($db"INSERT INTO strings VALUES ('$str')");
}

function 
max_len_step(&$context$string
{
    
$string sqlite_udf_decode_binary($string);
    if (
strlen($string) > $context) {
        
$context strlen($string);
    }
}

function 
max_len_finalize(&$context
{
    return 
$context;
}

sqlite_create_aggregate($db'max_len''max_len_step''max_len_finalize');

var_dump(sqlite_array_query($db'SELECT max_len(a) from strings'));

?>

Vedere anche:

add a note add a note

User Contributed Notes 1 note

up
1
BenWa
2 years ago
I had to migrate an existing SQLITE2 db with UDF encoded fields. SQLITE3 does not support sqlite_udf_decode_binary. So I wrote a replacement for the migration.

    function sqlite_udf_decode_binary($in){
      if ( substr($in,0,1)==chr(1) ) {
        $n=strlen($in);
        $e=ord(substr($in,1,1));
        $i=2 ;
        while($i<$n){
            $x = ord(substr($in,$i,1)) ;
            if ($x==1) {
                $i++;
                $x = ord(substr($in,$i,1)) - 1 ;
            }
            $out .= chr($x+$e) ;
            $i++;
        }
         
      } else {
          $out = $in ;
      }
      return $out ;
    }
To Top