$f="../mts/sites/default/files/test.doc";
//通过这种方式,我能够找到行数,但我没有得到如何为行计数提供文件夹路径..如果我将路径设为$safe_filename
和{{ 1}}即将到来的文件内容无法打开。请检查代码并提前帮助我
$target_path.$safe_filename
强调文字
答案 0 :(得分:0)
这不是一种非常安全的做事方式。 如果两个用户提交的文件名相同,则会相互覆盖。这会将用户限制为一个唯一的文件名,在运行系统一段时间后就会出现问题。更不用说用户如果得到这样的消息会很困惑。
更好的解决方案是为每个文件生成自己的文件名。您可以创建一个长的随机字符串,或者可以在mt_upload表中为插入的记录取mysql_insert_id()
。那么你也不需要乱用regexp,整个事情会简单得多。在mt_upload表中,如果要向用户显示旧文件名,可以保留旧文件名。
答案 1 :(得分:0)
如果这是确切的代码,则问题是您在str_word_count()
上致电$str
,但似乎无法在任何地方设置$str
。
答案 2 :(得分:0)
计算驻留在某个目录中的所有文件中的行的函数
function linecount_dir($dir) {
$ig = array('.','..');
$d = dir($dir);
while (false !== ($entry = $d->read())) {
if (!in_array($entry,$ig)) {
$total += linecount($d->path . "/$entry");
}
}
$d->close();
return $total;
}
计算行的功能
define(BLOCK_SIZE,131072);
function linecount($filename) {
$f = fopen($filename,'r');
while (!feof($f)) {
$d = fread($f,BLOCK_SIZE);
$rcount += substr_count($d, "\n");
$ncount += substr_count($d, "\r");
}
fclose($f);
return (($rcount >= $ncount) ? $rcount : $ncount);
}
应用于您的代码
$f="../mts/sites/default/files/test.doc";//in this way i am able to find line count,but i am not getting how i can give folder path for line counting
// count words
$numWords = str_word_count($str)/11;
// count lines
$numLines = linecount($f);
echo "This file have ". $numWords . " words";
echo "This file have ". $numLines . " lines";
答案 3 :(得分:0)
$ F =” ../ MTS /位点/默认/文件/".$ safe_filename;