проблема с количеством строк - PullRequest
0 голосов
/ 16 ноября 2009

$f="../mts/sites/default/files/test.doc"; // таким образом я могу найти количество строк, но я не понимаю, как я могу указать путь к папке для подсчета строк ... если я даю путь как $safe_filename и $target_path.$safe_filename, то это будет файл содержание не открывается. Пожалуйста, проверьте код и помогите мне заранее спасибо

<?php
$nid = 1;
$teaser = false;

// Load node
$node = node_load(array('nid' => $nid));
// Prepare its output
if (node_hook($node, 'view')) {
  node_invoke($node, 'view', $teaser, false);
}
else {
  $node = node_prepare($node, $teaser);
}
// Allow modules to change content before viewing.
node_invoke_nodeapi($node, 'view', $teaser, false);

// Print
print $teaser ? $node->teaser : $node->body;

$target_path = "../mts/sites/default/files/ourfiles/";


//$myfile = basename( $_FILES['uploadedfile']['name']);

$safe_filename = preg_replace( 
                     array("/\s+/", "/[^-\.\w]+/"), 
                     array("_", ""), 
                     trim($_FILES['uploadedfile']['name']));

$target_path = $target_path.$safe_filename;

if(file_exists($target_path))
      {
      echo "<script language=\"javascript\">";
      echo "window.alert ('File already exist');";
      echo "//--></script>";
      }
elseif(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {

echo "<script language=\"javascript\">";
echo "window.alert ('File uploaded succesfully');";
echo "//--></script>";


/*   
echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
    " has been uploaded";
*/

} 



$con = mysql_connect("localhost","mts","mts");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// Create table
mysql_select_db("mts", $con);



 $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;
    echo "This file have ". $numWords . " words";
echo "This file have ". $numWords . " lines";





mysql_query("INSERT INTO mt_upload (FileName,linecount, FilePath,DateTime)
VALUES ('".$safe_filename."','".$numWords."', '".$target_path.$safe_filename."',NOW())");


// Execute query
mysql_query($sql,$con);

mysql_close($con);
?>

выделенный текст

Ответы [ 4 ]

0 голосов
/ 17 ноября 2009

$ F =»../ мтс / сайты / по умолчанию / файлы /".$ safe_filename;

0 голосов
/ 16 ноября 2009

Если это точный код, то проблема в том, что вы звоните str_word_count() на $str, но, кажется, нигде не устанавливаете $str.

0 голосов
/ 16 ноября 2009

Функция для подсчета строк во всех файлах, находящихся в определенной директории

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";
0 голосов
/ 16 ноября 2009

Это не очень безопасный способ ведения дел. Если два пользователя отправляют файлы с одинаковым именем файла, они перезаписывают друг друга. Это ограничивает пользователя уникальным именем файла, которое через некоторое время запуска системы становится проблемой. Не говоря уже о том, что пользователь будет весьма озадачен, если он когда-либо получит такое сообщение.

Гораздо лучшим решением является создание собственного имени файла для каждого файла. Вы можете сделать длинную случайную строку или, возможно, взять mysql_insert_id() для вставленной записи в таблице mt_upload. Тогда вам также не нужно будет возиться с регулярными выражениями, и все будет намного проще. В таблице mt_upload вы можете сохранить старое имя файла, если хотите показать его пользователю или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...