1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 
<?php
/* --------------------------------------------------------------
   StringHelper.inc.php 2015-12-14
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2015 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/

MainFactory::load_class('StringHelperInterface');
MainFactory::load_class('CrossCuttingObjectInterface');

/**
 * Class StringHelper
 *
 * @category   System
 * @package    Extensions
 * @subpackage Helpers
 * @implements StringHelperInterface, CrossCuttingObjectInterface
 */
class StringHelper implements StringHelperInterface, CrossCuttingObjectInterface
{
    /**
     * Converts NULL values to empty string inside an array
     *
     * @param array $array
     *
     * @return array
     */
    public function convertNullValuesToStringInArray(array $array)
    {
        foreach($array as $key => $value)
        {
            if($value === null)
            {
                $array[$key] = (string)$value;
            }
        }
        
        return $array;
    }
    
    
    /**
     * Returns a cleaned filename by removing or replacing invalid characters.
     *
     * @param string $p_filename
     *
     * @throws InvalidArgumentException if $p_filename is not a string
     *
     * @return string cleaned filename
     */
    public function correctToValidFilename($p_filename)
    {
        if(!is_string($p_filename))
        {
            throw new InvalidArgumentException('$p_filename is not a string (' . gettype($p_filename) . ')');
        }
        
        $search   = 'ÁáÉéÍíÓóÚúÇçÃãÀàÂâÊêÎîÔôÕõÛû&ŠŽšžŸÀÁÂÃÅÇÈÉÊËÌÍÎÏÑÒÓÔÕØÙÚÛÝàáâãåçèéêëìíîïñòóôõøùúûýÿ ';
        $replace  = 'AaEeIiOoUuCcAaAaAaEeIiOoOoUueSZszYAAAAACEEEEIIIINOOOOOUUUYaaaaaceeeeiiiinooooouuuyy_';
        $filename = strtr($p_filename, $search, $replace);
        
        $replacePairs = array(
            'ä'       => 'ae',
            'Ä'       => 'Ae',
            'ö'       => 'oe',
            'Ö'       => 'Oe',
            'ü'       => 'ue',
            'Ü'       => 'Ue',
            '&auml;'  => 'ae',
            '&Auml;'  => 'Ae',
            '&ouml;'  => 'oe',
            '&Ouml;'  => 'Oe',
            '&uuml;'  => 'ue',
            '&Uuml;'  => 'Ue',
            'ß'       => 'ss',
            '&szlig;' => 'ss'
        );
        $filename = strtr($filename, $replacePairs);
        
        $filename = preg_replace('/[^\w\d_,\(\)\.\- ]+/', '', $filename);
        
        return $filename;
    }
}