0

我正在将图像上传到服务器,需要将 _ 代替图像中的间隙。就像图像的名称是 Stack Flow.jpg 一样,我需要将它作为 Stack_Flow.jpg 发送到目录以及电子邮件中。如何使用以下代码成为可能。我试过但没有成功..我以一种形式发送4个文件,代码为---

$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");

我正在使用以下功能,我如何将它应用于所有四个文件 -

<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

使用:

<?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 回答
0

在您的代码更改$order_image_a='order_'.$orderId.'_'.$filea;和其他类似行中 $order_image_a='order_'.$orderId.'_'.convertSpecialChars($filea);

但是如果你知道你的代码是如何工作的会更好。

于 2013-01-01T07:31:20.343 回答