Соответствие Regex 1024KB конвертировать в 1MB? - PullRequest
0 голосов
/ 06 августа 2010

Я получаю размер файла из индекса страницы, он составляет 1024 КБ, и я хочу, чтобы он напечатал 1 МБ вместо 1024 КБ. (полностью нуб здесь)

Я получил это:

if($row[2]==1) // Rapidshare Check
{
  $index=getpage($row[1]);
  if(strpos($index,"FILE DOWNLOAD")===false) //check if page contains the word file download  if not = bad link
  {
    mysql_query("UPDATE `v2links` SET `checked`='-1',`lastcheck`=NOW() WHERE `id`=".$row[0]);
    print "bad link\n";
    logstr("log-c.txt","bad link\n");
   }
   else
   {

    preg_match("**/([^\/\|\#\<\(\>\;\s][0-9]*[\s][KB]{2})/**",$index,$match);

     $fsize=$match[1];



  print $fsize."\n";
  logstr("log-c.txt","bad link\n");
  //logstr("log-c.txt","$caption | $fsize\n");
  mysql_query("UPDATE `v2links` SET `checked`='1',`fsize`='$fsize',`lastcheck`=NOW() WHERE `id`=".$row[0]);
  unset($match);
  }
 }

Спасибо

1 Ответ

0 голосов
/ 06 августа 2010

Насколько точной должна быть конверсия?

s/0*([0-9]+)[0-9]{3}K/\1M/g

будет обрезать последние три числа размером в четыре или более цифр ... но это усечение, а не даже рассмотрим математику.(Например, 1999K -> 1M)

Возможно, лучшим способом было бы s/K/000/g и s/M/000000/g, чтобы превратить его в (грубое) число байтов, а затем преобразовать, как вы хотите, обратно.

Наилучшим из возможных методов будет его обработка, если он имеет M, умноженное на 1024 * 1024;если он имеет K, умножьте на 1024. (если он имеет G, умножьте на 1024 *1024* 1024).Затем обработайте полученный размер так, как вы пытаетесь.- Обратите внимание, что было бы неплохо сохранить размер файла в виде целого числа, а не строки.

Для обработки и вывода, серия if, вероятно, достаточно хороша, и вы можете установить точные допускиза то, что что-то должно быть большим, чтобы отображаться как M вместо K. - Или, если вы просто хотите M, нет if, и вы просто делите на 1024 * 1024.

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