0

私はこれを関数に持っています:

これは画像のアップロード用です。

   function img_upload($folder) {
            $this->path = './public/img/' . $folder;
            $imgs = array();
            $count = 0;
            foreach ($_FILES as $key => $value) {
                $img_name = $this->char_replace($value['name'][$count], '_');
                $count++;
                $config = array(
                'allowed_types' => 'jpg|jpeg|png|gif',
                'upload_path' => $this->path,
                'file_name' => $img_name
            );
                $this->CI->load->library('upload', $config);
              if($key != 'logo') :
                  if (!$this->CI->upload->do_upload($key)) {
                } else {
                    $q = $this->CI->upload->data();
                    $config['image_library'] = 'gd2';
                    $config['source_image'] = $this->path . '/' . $q['file_name'];
                    $config['new_image'] = $this->path . '/thumbs';
                    $config['create_thumb'] = FALSE;
                    $config['maintain_ratio'] = TRUE;
                    $config['width'] = 128;
                    $config['height'] = 128;

                    $this->CI->load->library('image_lib');
                    $this->CI->image_lib->clear();
                    $this->CI->image_lib->initialize($config);
                    $this->CI->image_lib->resize();
                    array_push($imgs, $q['file_name']);
                }
              endif;
            }

そして、これは文字を置き換えるためのものです:

function char_replace($text, $rep_simbol = " ")
    {
        $char = array('!', '&', '?', '/', '/\/', ':', ';', '#', '<', '>', '=', '^', '@', '~', '`', '[', ']', '{', '}');
        return $name = str_replace($char, $rep_simbol, $text);
    }

アップロードは問題なく機能していますが、文字の置換はうまくいきません。アップロードしているファイルの名前の頭文字だけを使っていて、残りが途切れていませんか?ここで何が問題なのですか?

4

1 に答える 1

0

2 番目のパラメーターも配列にする必要があります。

function char_replace($text, $rep_simbol = " ")
    {
        $char = array('!', '&', '?', '/', '/\/', ':', ';', '#', '<', '>', '=', '^', '@', '~', '`', '[', ']', '{', '}');
        $symbols = array();
        foreach ($char as $val)
        $symbols[] = " ";//or empty string, whatever you want
        return $name = str_replace($char, $symbols, $text);
    }
于 2012-11-05T15:53:24.320 に答える