[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    А как проверить переную с текстовым содержимым на наличие руских или английских букв??
     
  2. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    if(preg_match('#^[a-z]+$#i',$var))
    echo 'english';
     
  3. blaga

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    у меня эта функция отлично работает.
    регуляркой ? [a-z][A-Z]
     
  4. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    <?php
    $a 
    2;
    $b 333;

    do{
       
    $a *= $a;
    }while(
    $a <= $b);
    echo 
    $a;
     
    2 people like this.
  5. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    9x9 = 81
    81x9 = 729

    а теперь скажи условие задачи по русски:)
     
    2 people like this.
  6. blaga

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    Есть такая проблема. Значит есть у меня файл который нужно прочитать, удалить повторки а записать заново, но по условию его нельзя читать сразу всего. То есть прочесть функцией file а потом убрать все повторки через array_unique не получеться.
    Как сделал я
    PHP:
    <?php
    $handle 
    fopen("res.txt""r");
    $handle2 fopen("result.txt""a+");
    while (!
    feof($handle)) {
        
    $buffer fgets($handle4096);
        echo 
    "buffer=".$buffer."<br>";
        do {
            
    $buf fgets($handle24096);
            echo 
    "buf=".$buf."<br>";
            if(
    $buf != $buffer)
            
    fwrite($handle2,$buffer);
            } while (!
    feof($handle2)) ;

    }
    fclose($handle);
    fclose($handle2);
    ?>
    но выходит какой то глюк. Второй цикл замыкаеться и пишеться бесконечно только первая строка, на проверку не обращает внимания.
    Скажите что сделано не так, или наметьте другой путь.
    Заранее спасибо.
     
  7. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Пипл,как считать из файла последовательность строк,преобразовав в массив ? Вот,например:

    Раз
    два
    три
    четыре
    пять

    Пробовал по всякому,вот только у меня всё это оказывалось в одном элемент массива))

    Преобразовать в массив strings,к примеру:)
     
    1 person likes this.
  8. mixkorshun

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    blaga
    как понял то у тебя 2 вложеных цикла.. причем в первом ты читаешь первую строку, а потом все остальные с ней сравниваешьи пишешь ее.. отсюда и эффект
     
  9. mixkorshun

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    сейчас набросать попробую рабочий
     
  10. mixkorshun

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    Code:
    <?php 
    $handle = fopen("res.txt", "r"); 
    $handle2 = fopen("result.txt", "a+"); 
    $buffer = fgets($handle, 4096);
    fwrite($handle2, $buffer);
    while (!feof($handle)) { 
        $buf= fgets($handle, 4096);
        if($buf == $buffer)
          {
          } else
          {
            $buffer=$buf;
            fwrite($handle2, $buffer);
          }
        
    } 
    fclose($handle); 
    fclose($handle2); 
    ?>
    должно работать. с тебя + )) если не работает отпиши в личку
     
  11. blaga

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    Велемир file()
    mixkorshun интерес в том что бы взять первую строку и проверить со всеми теми что уже в файле есть если такой строки нет то записать.
    но почему то первый цикл не перекручивает на вторую строку...
     
  12. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    $a = array();
    $fp = fopen("фаил.txt","r");

    while(!feof($fp)) {

    $a[] = fgets($fp,4096);

    }

    print_r($a);




    ?>

    Вроде так...
     
  13. blaga

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    работать то она работает, только вот повторки не удаляет. такого эффекта я тоже достиг. :(

    велемир перечитай условие. мне нельзя совать файл в массив.
     
  14. mixkorshun

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    тебе нужно чтобы строка вообще нигде в тексте не повторялась?? жди тогда, ща напишем
     
    1 person likes this.
  15. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    2 blaga:

    slovar.ini

    PHP:
    Результирующий файл:
    resultus.txt
    --------------------------------
    Обрабатываемый файл:
    1.txt
    --------------------------------
    Размер буфера:
    4096

    slovar.php

    PHP:
    <?php
    global $len_buffer;
    $ipArray array_map("trim"file("slovar.ini")); //Файл настроек
    $res trim($ipArray[1]);
    $file trim($ipArray[4]);
    $len_buffer trim($ipArray[7]);
    $size2 filesize($file);
    echo 
    "Result file file - $res\n";
    echo 
    "Adding file - $file, size - $size2 bytes\n";
    echo 
    "Buffer - $len_buffer bytes\n";
    echo 
    "Start, wait please...\n";
    echo 
    "---------------------------------------\n";


    Uslovar ($file,$res);




    /*Функция поиска повторов строк */
    function Ustr ($fp$str)
    {
       global 
    $len_buffer;
       
    fseek($fp,0);
       while (!
    feof ($fp)) {
          
    $temp trim(fgets($fp,$len_buffer));
          if (
    $str == $temp)
          return 
    false;
       }
       return 
    true;
    }

    /*Функция занесения уникальных слов в результирующий файл*/
    function Uslovar ($slovar1,$res)
    {
       global 
    $len_buffer;
       
    $date date("d.m.Y H:i");
       echo 
    "$date....Start.Wait please.....\n";
       
    $result fopen($res'w+') or die ("Can't open file $res for writing");
               
    $size filesize ($slovar1);
               
    $fp fopen ($slovar1'r') or die ("No such file - $slovar1");
               echo 
    "Size of file " .$size" bytes\n";
               while (!
    feof ($fp)) {
                    
    $temp trim (fgets ($fp$len_buffer));
                    if (
    Ustr ($result$temp)) {
                         
    fseek ($result0SEEK_END);
                         
    fwrite ($result$temp "\r\n");
                    }
                  }
               
    fclose ($fp);
       
       
    fclose ($result);
       
    $size1 filesize ($res);
       echo 
    "All results saved in $res ($size1 bytes)\n";
    }

    ?>



     
    #8055 Pashkela, 2 Feb 2009
    Last edited: 2 Feb 2009
    1 person likes this.
  16. mixkorshun

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    Code:
        $buffer = fgets($handle, 4096); 
        echo "buffer=".$buffer."<br>";
         fwrite($handle2,$buffer);// он пустой файл читает иначе!!!!
    вроде как в этом ошибка была.... но неуверен... он у тебя пустой файл читать начинал(handle2)
     
  17. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    А если a = 11 ? Бред несешь, зачем это нужно?
     
    1 person likes this.
  18. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    9*9,9*10,9*11,9*12 - ты это имеешь ввиду ?

    Если умножать само на себя,то 9*9,10*10,11*11 и т.д.

    Я тя чёт не догнал(

    <?php

    $a = 9;
    $b = 100;

    while ($a <=$b) {

    $a = $a*$a;

    $a = $a+1;

    if($a <= $b) {

    echo "<br>$a</br>";
    break;

    }

    }


    ?>

    Имхо если знак поменять,то бред получится ))))
     
  19. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    То что чак написал, перед вывдом еще раз на $a умножь
     
    1 person likes this.
  20. kraken

    kraken Member

    Joined:
    2 Jan 2009
    Messages:
    74
    Likes Received:
    75
    Reputations:
    5
    PHP:
    $a=2;
    $b=3;
    while (
    $a<$b$a*=$a;
    echo 
    $a;

    Если правильно тебя понял то так
     
Thread Status:
Not open for further replies.