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

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

Thread Status:
Not open for further replies.
  1. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,857
    Likes Received:
    1,961
    Reputations:
    594
    У меня такой вопрос как работать корректно с файлами на php размером более 2Гб.? Ну касательно вывода правильного размера файла выше 2Гб - это понятно, но вот непонятка с указателями при послед. чтении строк из файла, то ли он сбрасывается то ли замирает при достижении 2Гб. на одном месте то ли указывает на конец файла. Кароче мой слиятель двух упорядочных файлов работает некорректно с такими большими файлами, в чём проблема - не пойму, но предпалогаю что проблема в ограничении разрядности указателя (дискриптора) файла.
     
  2. kroŧ

    kroŧ Member

    Joined:
    19 May 2010
    Messages:
    141
    Likes Received:
    33
    Reputations:
    8
    -=lebed=-
    В php.ini:
    memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)
    Для того, чтобы убрать ограничения, установите значение этой директивы в -1.
    PHP:
    set_time_limit(0);
    $hn=fopen('source.iso' ,"rb");
    $h2=fopen('avi.iso',"wb");
    $size=0;
    while  (! 
    feof($hn))   {
    $file_data fgets ($hn,  102400);//102400 -сколько считывать за раз
    $size+=fwrite($h2,$file_data);
    }
    echo 
    'Размер файла: '.$size;
    fclose($h2);
    fclose($hn);
    Лучше всего для этого использовать Perl.
     
  3. BRR

    BRR New Member

    Joined:
    4 Jun 2012
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    PHP:
    <?php 

    $link 
    mysql_connect('localhost','root',''); 
    if (!
    $link) { 
        die(
    'Could not connect to MySQL: ' mysql_error()); 


    $db_selected mysql_select_db('foo',$link);
    if (!
    $db_selected) {
        die (
    'Не удалось выбрать базу foo: ' mysql_error());
    }
             
    $str "Hello Friend";
    $arr1 str_split($str);

             for(
    $i $i <= count($arr1); $i++) {

                
    mysql_query("INSERT INTO test (text) VALUES (".$arr1[$i].")");

            }
    ?> 
    получаю Notice: Undefined offset: 12

    вчем проблема?
     
  4. beerhack

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

    Joined:
    1 Mar 2008
    Messages:
    148
    Likes Received:
    55
    Reputations:
    5
    Почему не работает такой вариант? Пишет 'Fatal error: Call to undefined function eval()'
    PHP:
    <?php 
    $code
    ='eval'
    $code('echo "hello";'); 
    ?>
    Должно же выполниться по идеи как:
    PHP:
    <?php 
    eval('echo "hello";');
    ?>
    Но, увы.
    Хотя, допустим, такой код работает:
    PHP:
    <?php 
    $code
    ='base64_encode'
    $code('echo "hello";'); 
    ?>
     
  5. kroŧ

    kroŧ Member

    Joined:
    19 May 2010
    Messages:
    141
    Likes Received:
    33
    Reputations:
    8
    eval - поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.
     
  6. Gigabajt_

    Gigabajt_ Member

    Joined:
    13 Feb 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Имею Wordpress, в index.php прописан код
    PHP:
    <?php if (is_home()) { query_posts($query_string.'&cat=3&showposts=10'); } ?> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); // the loop ?> <div class="post" id="post-<?php the_ID(); ?>"> <h1 class="titl"><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1> <?php the_content('<!--Читать-->'); ?> </div> <?php endwhile; ?> <?php else : ?> <h2 class="center">Страница в доработке.</h2> <p class="center">-</p> <?php endif; ?>
    При первом вызове кода на странице все работает номально: выводятся 10 новостей (showposts=10) из категории 3 (cat=3), но если прописать этот код второй раз на странице, заменив номер категории (например на 4) и количество постов, то выводятся те же публикации из категории 3 и в том же количестве, т.е строчка
    PHP:
    ($query_string.'&cat=3&showposts=10')
    вообще не работает второй раз. :mad:

    Помогите разобраться, сам php не знаю
     
  7. daniel777

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

    Joined:
    8 Jul 2010
    Messages:
    520
    Likes Received:
    90
    Reputations:
    37
    Сбербанк, используйте регулярные выражения:
    PHP:
    preg_match_all('/title=\"(.*?)\"/'$text$matches);
    print_r($matches);
     
  8. felix_v26

    felix_v26 New Member

    Joined:
    19 Mar 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0

    не могу сказать точно, но возможно когда вызываешь второй раз новые записи пишутся в старый массив.
    в любом случае http://wp-skins.info/2007/12/04/neskolko-primerov-ispolzovaniya-query_posts.html вот тут осписано как можно из разных категорий получать и в комментариях такая же ошибка как у тебя с решением.
     
  9. Winst0n

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

    Joined:
    19 Aug 2008
    Messages:
    92
    Likes Received:
    5
    Reputations:
    0
    Пример.

    Code:
    <?php
    $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, 'http://forum.antichat.ru/');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
         $data = @curl_exec($ch);
         curl_close($ch);
     
    preg_match('|<a href="forum(.*).html">(.*)</div>|', $data, $arr);
    
    echo $arr[0];
    ?>
    получаем первое навание раздела - "ИНФО". как сделать это в цикле, и получить все названия разделов ?

    не могу сообразить, отупел в армии :(
     
  10. daniel777

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

    Joined:
    8 Jul 2010
    Messages:
    520
    Likes Received:
    90
    Reputations:
    37
    PHP:
    preg_match_all('|<a href="forum(.*).html"><strong>(.*)</strong></a><br>|'$data$arr);
    А дальше в цикле выводим содержимое массива $arr
     
    1 person likes this.
  11. Winst0n

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

    Joined:
    19 Aug 2008
    Messages:
    92
    Likes Received:
    5
    Reputations:
    0
    спасибо. "preg_match_all", вот в чем ошибка была.
     
  12. kowap

    kowap New Member

    Joined:
    12 Feb 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    при скачивании файла, он весит два байта. на сервере норм лежит. уверен дело в файле, который качает. вот он:
    PHP:
    <?$name_foto htmlspecialchars($_GET["n"]);
    header('Content-type: application/octet-stream');
    header("Content-Disposition: attachment; filename=".$name_foto);?> 
     
  13. DJ ][akep

    DJ ][akep Member

    Joined:
    27 Jan 2008
    Messages:
    93
    Likes Received:
    20
    Reputations:
    1
    Тю ну его же выводить нужно после задания хидера :)
    т.е. echo file_get_contents('/путь/к/файлу.jpg');
     
  14. mastaadon

    mastaadon New Member

    Joined:
    26 Mar 2009
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте,
    подскажите пожалуйста как заставить это чудо работать?

    Есть код php который создает элемент select считывая xml.

    PHP:
    print "<select>";     
    foreach(
    $xml->children() as $key)     {         
    echo 
    '<option value="'.$key['alias'].'">'.' '$key['amount'] .' '$key['currencyName'].' - '$key.'</option>';     

    print 
    "</select>"?>
    select:
    HTML:
    <select> 
    <option value="telemoneyr"> 387.59 TM RUR - Telemoney</option> 
    <option value="perfectmoneyz"> 10.92 PM USD - PerfectMoney</option> 
    <option value="perfectmoneye"> 9.28 PM EUR - PerfectMoney</option>
    <option value="liqpayu"> 89.53 LP UAH - LiqPay</option> 
    <option value="liqpayr"> 349.38 LP RUR - LiqPay</option>
    <option value="liqpaye"> 9.28 LP EUR - LiqPay</option>
    <option value="privat24z"> 11.03 P24 USD - Privat24</option> 
    <option value="nsmep"> 89.53 НСМЭП UAH - НСМЕП</option> 
    <option value="privat24u"> 90.07 P24 UAH - Privat24</option> 
    <option value="privat24e"> 9.5 P24 EUR - Privat24</option>
    <option value="unicard"> 11.03 UK USD - Unikarta</option> 
    <option value="monexyu"> 95.45 MoneXy UAH - MoneXy</option> 
    </select>
    
    Мне нужно что бы в select по умолчанию выбирался Privat24.
    Пытался вписать нечто вроде этого, но не работает. Может кто подсказать как правильно это сделать?

    PHP:
    print "<select>";     
    foreach(
    $xml->children() as $key)     {         
    echo 
    '<option value="'.$key['alias'].'"'.if($key['alias']=="privat24u"){print "selected=selected";}.'>'.' '$key['amount'] .' '$key['currencyName'].' - '$key.'</option>';              
    } print 
    "
    </select>"
    ;
     
  15. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    736
    Likes Received:
    73
    Reputations:
    19
    PHP:
    <?
    print 
    "<select>";     

    define('SHAB''<option value="%s" %s> %s %s -  %s</option>'); 
    foreach(
    $xml->children() as $key) {    
        
    printf(SHAB$key['alias'], 'selected="selected"' $key['alias'] == 'privat24z' '',
            
    $key['amount'], $key['currencyName'], $key);  
    }  

    print 
    "</select>"

    ?>
     
  16. mastaadon

    mastaadon New Member

    Joined:
    26 Mar 2009
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Большое спасибо разобрался уже. Надо было переставить
    $key['alias'] == "privat24z" ? 'selected="selected"' :
     
    #21436 mastaadon, 17 Feb 2013
    Last edited: 17 Feb 2013
  17. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,582
    Likes Received:
    173
    Reputations:
    75
    такой вопросец, нужно получить полный путь к папке в которой лежит исполняемый файл, тоесть то что возвращает функция $_SERVER['SCRIPT_FILENAME'] только без имени сомого файла,
    я конечно понимаю что можно написть регулярное выражение, но может есть способ проще?
     
  18. mrDebian

    mrDebian Member

    Joined:
    27 Jan 2013
    Messages:
    96
    Likes Received:
    13
    Reputations:
    10
    http://www.php.net/manual/en/function.dirname.php
    или
    http://www.php.net/manual/en/function.pathinfo.php
     
    1 person likes this.
  19. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,255
    Likes Received:
    1,147
    Reputations:
    886
    dirname(__FILE__)
     
    _________________________
    1 person likes this.
  20. preno

    preno Member

    Joined:
    5 Sep 2010
    Messages:
    251
    Likes Received:
    6
    Reputations:
    0
    вопрос такой, как глобально делать замену текста в суперглобальном массиве правильно?
    Мне надо чтобы во всем массиве $_GET пробелы заменялись на восклицательный знак, с переменной это выглядит так:
    $_GET = str_replace(' ','!',$_GET);
    Но с массивом так нельзя, но суть думаю понятна, вообще в идеале в этом суперглобальном массиве сделать замену как для переменных этого массива, так и для значений этих переменных, Спасибо за внимание.

    Напишите пример кода, плз!
     
    #21440 preno, 20 Feb 2013
    Last edited: 20 Feb 2013
Loading...
Thread Status:
Not open for further replies.