将文件名转换为md5时遇到问题。
我有文件名:
20072437_60-0001#2013年12月7日^ 11.41.23.jpg
但如果我在文件名中有'#'和'^',它就无法工作。 如何在不删除'#'nad'^'的情况下使其工作。
我的代码:
if ($inline === true) {
$thumbname = md5($file).'.jpg';
} else {
$thumbname = md5($file).'-big.jpg';
}
答案 0 :(得分:0)
以下代码对我来说非常合适?
<?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;
输出: -
960f23e66bdfdff1d10a53f4957387f8.jpg
这样做的另一种方式(我认为你正在寻找)
通过创建一个函数来获取最后一个小数位之前的eveything: -
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 = true,则会输出: -
0f068b6cd39ea23fc73c5c51ea08da8f.jpg
如果$ inline = false: -
0f068b6cd39ea23fc73c5c51ea08da8f-big.jpg
您可以看到示例@ http://sandbox.onlinephpfunctions.com/code/10b6a2148b44601c3aacdc009336b0cde7989109