0

画像をサーバーにアップロードしています。画像のギャップの代わりに _ を配置する必要があります。画像の名前が Stack Flow.jpg の場合と同様に、ディレクトリと電子メールで Stack_Flow.jpg として送信する必要があります。次のコードでどのように可能でしょうか。試してみましたが、成功しませんでした.4つのファイルを1つの形式で送信しています。コードは ---

$filea = $_FILES['FILE1']['name'];
        $fileb = $_FILES['FILE2']['name'];
        $filec = $_FILES['FILE3']['name'];
        $filed = $_FILES['FILE4']['name'];


$order_image_a='order_'.$orderId.'_'.$filea;
        if(!empty($filea)) move_uploaded_file($_FILES['FILE1']['tmp_name'], "../files/$order_image_a");

        $order_image_b='order_'.$orderId.'_'.$fileb;
        if(!empty($fileb)) move_uploaded_file($_FILES['FILE2']['tmp_name'], "../files/$order_image_b");

        $order_image_c='order_'.$orderId.'_'.$filec;
        if(!empty($filec)) move_uploaded_file($_FILES['FILE3']['tmp_name'], "../files/$order_image_c");

        $order_image_d='order_'.$orderId.'_'.$filed;
        if(!empty($filed)) move_uploaded_file($_FILES['FILE4']['tmp_name'], "../files/$order_image_d");

以下の関数を使用していますが、4 つのファイルすべてに適用するにはどうすればよいですか?

<script>
function convertSpecialChars($str) {
    $str = str_replace( " ", "_", $str );
    return $str;
}
</script>
4

4 に答える 4

2

これはphpでの簡単な例です:

<?php

$name = "Stack Flow.jpg";
echo preg_replace('/[\s\-]+/', '_', $name );
?>

戻り値Stack_Flow.jpg

http://codepad.org/MQoEZ2wv

于 2013-01-01T07:28:52.850 に答える
1

これはスクリプトではなく、PHP です。

<?
function convertSpecialChars($str) {
    $str = str_replace( " ", "_", $str );
    return $str;
?>

//他のすべての画像についても同じことを行います..

$filea = str_replace(' ', '_', $filea;
$order_image_a='order_'.$orderId.'_'.$filea;
if(!empty($filea)) move_uploaded_file($_FILES['FILE1']['tmp_name'], "../files/$order_image_a");
于 2013-01-01T07:31:18.473 に答える
0

コードの変更$order_image_a='order_'.$orderId.'_'.$filea;と他の同様の行で $order_image_a='order_'.$orderId.'_'.convertSpecialChars($filea);

ただし、コードがどのように機能するかを知っていれば、より良いでしょう。

于 2013-01-01T07:31:20.343 に答える
0

使用:

<?php
    function convertSpecialChars($str) {
        $str = str_replace( " ", "_", $str );
        return $str;
    }
?>

そして、あなたのコード:

$filea = $_FILES['FILE1']['name'];
$fileb = $_FILES['FILE2']['name'];
$filec = $_FILES['FILE3']['name'];
$filed = $_FILES['FILE4']['name'];


$order_image_a='order_'.$orderId.'_'.convertSpecialChars($filea);
if(!empty($filea))
    move_uploaded_file($_FILES['FILE1']['tmp_name'], "../files/$order_image_a");

$order_image_b='order_'.$orderId.'_'.convertSpecialChars($fileb);
if(!empty($fileb))
    move_uploaded_file($_FILES['FILE2']['tmp_name'], "../files/$order_image_b");

$order_image_c='order_'.$orderId.'_'.convertSpecialChars($filec);
if(!empty($filec))
    move_uploaded_file($_FILES['FILE3']['tmp_name'], "../files/$order_image_c");

$order_image_d='order_'.$orderId.'_'.convertSpecialChars($filed);
if(!empty($filed))
    move_uploaded_file($_FILES['FILE4']['tmp_name'], "../files/$order_image_d");

または、可能であれば、ループで実行できます (コードの重複が少なくなります)。

for ($i = 1; $i <= 4; $i++)
{
    $file = $_FILES['FILE' . $i]['name'];

    $order_image = 'order_' . $orderId . '_' . convertSpecialChars($file);

    if(!empty($file))
        move_uploaded_file($_FILES['FILE' . $i]['tmp_name'], "../files/$order_image");
}
于 2013-01-01T07:30:20.803 に答える