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

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

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

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    про flush(); забыли? :)
     
  2. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    тогда уточню некоторый момент
    + то что это немного не кросплатформенно. примечание к функции на оф.сайте хватит.

    и все же лучше построить немного другую схему, например, если это WEB то через AjAX.
     
    #11422 RedBull@12, 29 Aug 2009
    Last edited: 29 Aug 2009
  3. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    он консоль хочет, чтобы cls был реализован
     
  4. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    я конечно может чего-то не понял в цели нужного скрипта.
    но реализовать cls по средствам flush() не удалось, по крайне мере под win32.
    PHP:
    <?php  
    for($i 0$i 5$i++)  {     
    echo 
    $i;     
    sleep(10);  
    }  
    flush();  
    for(
    $i 0$i 5$i++)  {     
    echo 
    $i;     
    sleep(10);  
    }  
    ?>
    результат вывода:
    Code:
    D:\php5.2.5>php.exe "d:\test.php"
    0123401234  
    D:\php5.2.5>
    на сколько я понимаю flush(); просто очищает свой вутренний буфер, и в случае если это web то отдает вывод, в некоторых случаях, браузеру, а так продолжает свою работу. поясните как можно использовать flush(); для реализации консольного cls?!
     
    #11424 RedBull@12, 29 Aug 2009
    Last edited: 29 Aug 2009
  5. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    команда flush(); была подсказкой с моей стороны, человек просто забыл про её существование.

    В своём посте,как видите,я не уточнял дополнительные моменты этой проблемы.

    Вы неправильно делаете. Вот пример использования:

    PHP:
    for($i 1$i 20$i++){
    echo 
    $i."<br>";
    ob_flush();
    ob_end_clean();
    flush();
    }
    echo 
    "Done.";
     
    #11425 Deathdreams, 29 Aug 2009
    Last edited: 29 Aug 2009
  6. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    я стесняюсь спросить подсказкой к чему?!
    объясните что вы хотели сказать функцией flush(), то что она очистит буфер?!очистка буфера и очистка экрана консоли это разные вещи...короче поясните
     
  7. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    объясните мне ход ваших мыслей в данном коде.
    ob_flush - очищает (отправляет) буфер вывода
    ob_end_clean - очищает буфер вывода и отключает буферизацию вывода.
    flush - очищает буфер вывода.
    что вы этим хотели показать?! и как это связано с реализацией cls, тобишь очисткой экрана?

    не считая кучи предупрждений и ошибок php код выполнился...но суть..он вывел
    1
    2
    ....
    19
    Done.
    в чем суть?!
     
    #11427 RedBull@12, 29 Aug 2009
    Last edited: 29 Aug 2009
    2 people like this.
  8. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    только средствами php реализовывать это не реально... используй аякс...
    или пиши код на яве....
    ---
    пхп исполняется на сервере и поэтому не реально очистить экран... а если захочешь средством перезагрузки эерана... то выполнишь код снова...

    примитивный пример с перезагрузкой страницы
     
    2 people like this.
  9. Большой джо

    Joined:
    28 Jun 2009
    Messages:
    51
    Likes Received:
    2
    Reputations:
    0
    Подскажите пожалста, сам уже часов 5 наверно парюсь,
    есть строка, кодировка её не известна, мне надо автоматически определить кодировку и переконвертировать в windows-1251, как реализовать скрипт?)
     
  10. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <?php 
    $q 
    'вася РїСЂСЏРЅРёРєРѕРІ';
    $s mb_detect_encoding($q);//Определяем кодировку
    $q iconv($s'CP1251//TRANSLIT'$q);//Декодируем
    echo $s "\r\n";
    echo 
    $q "\r\n";
    ?>
    </pre>
    Но это только для стандартных ситуаций
     
  11. Большой джо

    Joined:
    28 Jun 2009
    Messages:
    51
    Likes Received:
    2
    Reputations:
    0
    спс, ща буду пробовать
     
  12. Большой джо

    Joined:
    28 Jun 2009
    Messages:
    51
    Likes Received:
    2
    Reputations:
    0
    неа, всё равно, выскакивает � ����4�3�4�5
     
  13. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    на iconv действует нукоторое ограничение.+ не всегда mb_detect_encoding может определить кодировку.
    как вариант, но тоже не 100%
    http://popoff.donetsk.ua/text/work/libs/a/charset/
    лично я для определния utf-8 использую вот это условие
    PHP:
    if (preg_match('//u'$string)) { /* у вас UTF-8 */ }
     
    #11433 RedBull@12, 29 Aug 2009
    Last edited: 29 Aug 2009
  14. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Функция определения кодировки:
    PHP:
    <?php
    define
    ('LOWERCASE',3);
    define('UPPERCASE',1);

    function 
    detect_cyr_charset($str) {
        
    $charsets = Array(
                          
    'k' => 0,
                          
    'w' => 0,
                          
    'd' => 0,
                          
    'i' => 0,
                          
    'm' => 0
                          
    );
        for ( 
    $i 0$length strlen($str); $i $length$i++ ) {
            
    $char ord($str[$i]);
            
    //non-russian characters
            
    if ($char 128 || $char 256) continue;
            
            
    //CP866
            
    if (($char 159 && $char 176) || ($char 223 && $char 242)) 
                
    $charsets['d']+=LOWERCASE;
            if ((
    $char 127 && $char 160)) $charsets['d']+=UPPERCASE;
            
            
    //KOI8-R
            
    if (($char 191 && $char 223)) $charsets['k']+=LOWERCASE;
            if ((
    $char 222 && $char 256)) $charsets['k']+=UPPERCASE;
            
            
    //WIN-1251
            
    if ($char 223 && $char 256$charsets['w']+=LOWERCASE;
            if (
    $char 191 && $char 224$charsets['w']+=UPPERCASE;
            
            
    //MAC
            
    if ($char 221 && $char 255$charsets['m']+=LOWERCASE;
            if (
    $char 127 && $char 160$charsets['m']+=UPPERCASE;
            
            
    //ISO-8859-5
            
    if ($char 207 && $char 240$charsets['i']+=LOWERCASE;
            if (
    $char 175 && $char 208$charsets['i']+=UPPERCASE;
            
        }
        
    arsort($charsets);
        return 
    key($charsets);
    }
    ?>
     
  15. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    данный код не верно определяет кодировку в некоторых случаях.
    и
    привиденная мною библиотека более корректно определяет кодировку, да и по сабжу больше походит.
     
  16. Большой джо

    Joined:
    28 Jun 2009
    Messages:
    51
    Likes Received:
    2
    Reputations:
    0
    ну с определением кодировки я разобрался, как перекодировать в windows-1251? дело в том, что я пишу icq бота с webicqlite классом, так как большинство функций про класса не требуется, данные выводятся в utf8, и я никак не могу перекодировать их в windows-1251, киньте пжлста какойнить скрипт для кодирования!
     
  17. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    вы мои посты не видите?!я описал два метода...
    1-http://popoff.donetsk.ua/text/work/libs/a/charset/ подключите библиотеку для конверта в cp1251
    2-метод которым пользуюсь, тоже повзаимствованный, if (preg_match('//u', $string)) { /* у вас UTF-8 */ }
    в чем проблема?!совместите два метода и дейлате что хотите.
     
  18. Большой джо

    Joined:
    28 Jun 2009
    Messages:
    51
    Likes Received:
    2
    Reputations:
    0
    извиняюсь, пропустил посты, всё норма работает, спс =)
     
  19. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    При заходе на линк курлом куки не сохраняются CURLOPT_COOKIEJAR, в HEADER куки тоже отсутствуют, хотя когда захожу браузером на линк, они (куки) устанавливаются..
    Как их можно вытащить скриптом..?! Где они могут храниться..?!
     
  20. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    если в хедере нету то непраивльный запрос.
    потому что в хедере должна быть строка
    set-cookie: ...
     
Thread Status:
Not open for further replies.