Php md5无法转换文件名实体

Php md5无法转换文件名实体,php,md5,Php,Md5,我无法将文件名转换为md5 我有文件名: 20072437_60-0001#12-07-2013^11.41.23.jpg 但如果文件名中有“#”和“^”则不起作用。 如何在不删除“#”和“^”的情况下使其工作 我的代码: if ($inline === true) { $thumbname = md5($file).'.jpg'; } else { $thumbname = md5($file).'-big.jpg'; } 下面的代码非

我无法将文件名转换为md5

我有文件名:

20072437_60-0001#12-07-2013^11.41.23.jpg

但如果文件名中有“#”和“^”则不起作用。 如何在不删除“#”和“^”的情况下使其工作

我的代码:

    if ($inline === true) {
        $thumbname = md5($file).'.jpg';
    } else {
        $thumbname = md5($file).'-big.jpg';
    }

下面的代码非常适合我

<?php
$inline = true;
$file = '20072437_60-0001#12-07-2013^11.41.23.jpg';

if ($inline === true) {
        $thumbname = md5($file).'.jpg';
    } else {
        $thumbname = md5($file).'-big.jpg';
    }

echo $thumbname;
另一种方法(我想您正在寻找)

是通过创建一个函数来获取最后一个小数位之前的所有内容:-

function reverse_strrchr($haystack, $needle)
{
    $pos = strrpos($haystack, $needle);
    if($pos === false) {
        return $haystack;
    }
    return substr($haystack, 0, $pos);
}
因此,最终结果如下所示:-

<?php

function reverse_strrchr($haystack, $needle)
{
    $pos = strrpos($haystack, $needle);
    if($pos === false) {
        return $haystack;
    }
    return substr($haystack, 0, $pos);
}

$inline = false;
$file = '20072437_60-0001#12-07-2013^11.41.23.jpg';

$newFile = reverse_strrchr( $file, '.' );

if ($inline === true) {
    $thumbname = md5($newFile).'.jpg';
} else {
    $thumbname = md5($newFile).'-big.jpg';
}

echo $thumbname;
?>
如果$inline=false:-

0f068b6cd39ea23fc73c5c51ea08da8f-big.jpg

您可以看到一个示例@

我很好奇为什么首先允许使用这些字符。您遇到了什么错误?请说明错误您正在尝试使用扩展名md5文件,然后添加扩展名,而您应该在md5中键入拇指名称。这就是我认为这里的问题所在。那么,我说得对吗?您的问题不清楚。我们还需要知道什么是
$file
$inline
。由于不清楚,我投票决定关闭。下面给了你一个答案,所以你必须问他们。我已经离开了,因为你没有回答,或者你留下的问题只是在将来的某个日期返回。我相信它是有效的,但这是md5'与文件“扩展名”,然后输出md5与一个额外的扩展名,不确定这是否是他们想要在这里。可能是他们的代码失败的原因。我认为他们需要把问题说得更清楚一点,代码按原样工作。哦,我完全同意。
0f068b6cd39ea23fc73c5c51ea08da8f.jpg
0f068b6cd39ea23fc73c5c51ea08da8f-big.jpg