Советы по PHP

Как преобразовать строку в кодировке UTF-8 в 1251. Вот пример для PHP функции делающей прямое и обратное преобразование.

function Encode ( $str, $type )
{ // $type: 'w' - encodes from UTF to win 'u' - encodes from win to UTF
  static $conv='';
  if (!is_array ( $conv )){
    $conv=array ();
    for ( $x=128; $x <=143; $x++ ){
      $conv['utf'][]=chr(209).chr($x);
      $conv['win'][]=chr($x+112);
    }
    for ( $x=144; $x <=191; $x++ ){
      $conv['utf'][]=chr(208).chr($x);
      $conv['win'][]=chr($x+48);
    }
    $conv['utf'][]=chr(208).chr(129);
    $conv['win'][]=chr(168);
    $conv['utf'][]=chr(209).chr(145);
    $conv['win'][]=chr(184);
 }
  if ( $type=='w' ) return str_replace ( $conv['utf'], $conv['win'], $str );
  elseif ( $type=='u' ) return str_replace ( $conv['win'], $conv['utf'], $str );
  else return $str;
}

Есть путь легче, использовать

$line = mb_convert_encoding($line, "Windows-1251", "UTF-8");

Но в этом случае если строка в уже в кодировке win-1251, то mb_convert_encoding заменит русские символы на знаки вопроса. Функция Encode безопасна в этом отношении и просто не тронет кириллицу.

Чтобы загрузить файл на сервер c помощью PHP необходимо:

1. Форма для присоединения файла
2. Код для обработки (в нашем случае на PHP), который загрузит файл в нужный каталог на сервере

Форма для присоединения файла (HTML-код):

<form enctype='multipart/form-data' action='upload.php' method=post>
<input type=file name="userfile" size=27>
<input type=submit value="Сохранить">
</form>

Так она будет выглядеть:

Внимание, без свойства enctype='multipart/form-data'  форма не сможет работать с файлами.


Скрипт обработчик, который должен находиться в файле upload.php, т.к. в атрибуте action формы мы указали upload.php. Используется массив $_FILES['userfile'], так как в свойстве name мы указали userfile.

<?

$uploaddir = "d:/hst/domen/http/files/";
$filename=$_FILES['userfile']['name'];
$uploadfile = $uploaddir . $filename;
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
//chmod($uploadfile,0777); // в случае Unix хостинга возможно нужно раскомментировать для доступности файла без использования PHPHP
?>

Если Вы пользуетесь Unix - хостингом, то после загрузки файла, чтобы он был доступен HTTP необходимо поменять на него права. Иначе он будет доступен только серверным скриптам, таким как PHP.

Наиболее часто используются следующие параметры массива $_FILES:

$_FILES['filename']['name']; // ----- имя загружаемого файла

$_FILES['filename']['size']; // ----- размер загружаемого файла в байтах

$_FILES['filename']['tmp_name']; // ----- имя загруженного файла во временной папке сервера

$_FILES['filename']['type']; // ----- MIME-тип

При копировании или цитировании гиперссылка на http://perviysait.narod.ru/phpadvise.htm как источник обязательна.