PHP – Remove Duplicate Values From Multi-dimension Array


<?php
function super_unique($array)
{
  $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

  foreach ($result as $key => $value)
  {
    if ( is_array($value) )
    {
      $result[$key] = super_unique($value);
    }
  }

  return $result;
}
?>


source:
http://stackoverflow.com/questions/3598298/php-remove-duplicate-values-from-multidimensional-array

Code Igniter Error: Disallowed Key Characters


1. Search for function _clean_input_keys on /system/core/Input.php

2. Modify this line

exit(‘Disallowed Key Characters.’);

to

exit(‘Disallowed Key Characters.’ .  $str);

3. Refresh page to see the characters which generate the error

4. If you need to add those characters into the exception list, just add to this line

if ( ! preg_match(“/^[a-z0-9:_\/-]+$|/i”, $str))

I add | (pipe) character on the example above

Note: In most cases you can resolve the problem just by clearing the cookies

PHP – Unzip Large File


    $filename = 'c:\kosmas.zip';
        $archive = zip_open($filename);
        while($entry = zip_read($archive)){
            $size = zip_entry_filesize($entry);
            $name = zip_entry_name($entry);
            $unzipped = fopen('c:/unzip/'.$name,'wb');
            while($size > 0){
                $chunkSize = ($size > 10240) ? 10240 : $size;
                $size -= $chunkSize;
                $chunk = zip_entry_read($entry, $chunkSize);
                if($chunk !== false) fwrite($unzipped, $chunk);
            }

            fclose($unzipped);
        }


source:
http://stackoverflow.com/questions/3263129/unzipping-larger-files-with-php

Working with PHP, MySQL and UTF-8


Heres a list of actions you should do in order to get PHP + MySQL working with UTF-8:

1. Database:

CREATE DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
;

or if the database was already created:

ALTER DATABASE db_name
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci
;

CREATE TABLE table_name(

)
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci;

Or if the tables are already created:

ALTER TABLE tbl_name
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci;

2. Enable this line in php.ini:

extension=php_mbstring.dll

and configure the following in the same file:

mbstring.language = Neutral
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.detect_order = auto
mbstring.substitute_character = none
default_charset = UTF-8

3. Use the following php functions instead:

mail() -> mb_send_mail()
strlen() -> mb_strlen()
strpos() -> mb_strpos()
strrpos() -> mb_strrpos()
substr() -> mb_substr()
strtolower() -> mb_strtolower()
strtoupper() -> mb_strtoupper()
substr_count() -> mb_substr_count()
ereg() -> mb_ereg()
eregi() -> mb_eregi()
ereg_replace() -> mb_ereg_replace()
eregi_replace() -> mb_eregi_replace()
split() -> mb_split()
htmlentities($var) -> htmlentities($var, ENT_QUOTES, ‘UTF-8’)

4. Use headers and meta tags like:

header(‘Content-type: text/html; charset=UTF-8’) ;

<meta http-equiv=”Content-type” value=”text/html; charset=UTF-8″ />

5. add charset to form

<form accept-charset=”utf-8″ …>

6. Before any insert / update in the database you should perform the following:

mysql_query(“SET NAMES ‘utf8′”);

or use this before making DB connection

mysql_set_charset(‘utf8’);

source:

http://akrabat.com/php/utf8-php-and-mysql/

http://tympanus.net/codrops/2009/08/31/solving-php-mysql-utf-8-issues/