Crypt_GPG
[ class tree: Crypt_GPG ] [ index: Crypt_GPG ] [ all elements ]

Source for file ByteUtils.php

Documentation is available at ByteUtils.php

  1. <?php
  2.  
  3. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  4.  
  5. /**
  6.  * A class for performing byte-wise string operations
  7.  *
  8.  * GPG I/O streams are managed using bytes rather than characters.
  9.  *
  10.  * PHP version 5
  11.  *
  12.  * LICENSE:
  13.  *
  14.  * This library is free software; you can redistribute it and/or modify
  15.  * it under the terms of the GNU Lesser General Public License as
  16.  * published by the Free Software Foundation; either version 2.1 of the
  17.  * License, or (at your option) any later version.
  18.  *
  19.  * This library is distributed in the hope that it will be useful,
  20.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  22.  * Lesser General Public License for more details.
  23.  *
  24.  * You should have received a copy of the GNU Lesser General Public
  25.  * License along with this library; if not, write to the Free Software
  26.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  27.  *
  28.  * @category  Encryption
  29.  * @package   Crypt_GPG
  30.  * @author    Michael Gauthier <mike@silverorange.com>
  31.  * @copyright 2013 silverorange
  32.  * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
  33.  * @version   CVS: $Id$
  34.  * @link      http://pear.php.net/package/Crypt_GPG
  35.  */
  36.  
  37. // {{{ class Crypt_GPG_ByteUtils
  38.  
  39. /**
  40.  * A class for performing byte-wise string operations
  41.  *
  42.  * GPG I/O streams are managed using bytes rather than characters. This class
  43.  * requires the mbstring extension to be available.
  44.  *
  45.  * @category  Encryption
  46.  * @package   Crypt_GPG
  47.  * @author    Michael Gauthier <mike@silverorange.com>
  48.  * @copyright 2013 silverorange
  49.  * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
  50.  * @link      http://pear.php.net/package/Crypt_GPG
  51.  * @link      http://php.net/mbstring
  52.  */
  53. {
  54.     // {{{ strlen()
  55.  
  56.     /**
  57.      * Gets the length of a string in bytes
  58.      *
  59.      * This is used for stream-based communication with the GPG subprocess.
  60.      *
  61.      * @param string $string the string for which to get the length.
  62.      *
  63.      * @return integer the length of the string in bytes.
  64.      */
  65.     public static function strlen($string)
  66.     {
  67.         return mb_strlen($string'8bit');
  68.     }
  69.  
  70.     // }}}
  71.     // {{{ substr()
  72.  
  73.     /**
  74.      * Gets the substring of a string in bytes
  75.      *
  76.      * This is used for stream-based communication with the GPG subprocess.
  77.      *
  78.      * @param string  $string the input string.
  79.      * @param integer $start  the starting point at which to get the substring.
  80.      * @param integer $length optional. The length of the substring.
  81.      *
  82.      * @return string the extracted part of the string. Unlike the default PHP
  83.      *                 <kbd>substr()</kbd> function, the returned value is
  84.      *                 always a string and never false.
  85.      */
  86.     public static function substr($string$start$length = null)
  87.     {
  88.         if ($length === null{
  89.             return mb_substr(
  90.                 $string,
  91.                 $start,
  92.                 self::strlen($string$start'8bit'
  93.             );
  94.         }
  95.  
  96.         return mb_substr($string$start$length'8bit');
  97.     }
  98.  
  99.     // }}}
  100. }
  101.  
  102. // }}}
  103.  
  104. ?>

Documentation generated on Wed, 13 Mar 2013 18:30:04 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.