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

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

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

    RayzeR0 New Member

    Joined:
    21 Jun 2007
    Messages:
    6
    Likes Received:
    2
    Reputations:
    0
    Добрый день, есть такой вопрос, нужно написать простенький скрипт, который обрезал бы каждую строку до нужного мне количества символов, в данном случае до 18 символов
    Как можно это сделать средствами php? Примерно 1000 строк обрезать нужно до 18 символов каждую :) спасибо за помощь :)
     
  2. Solker

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

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    RayzeR0
    PHP:
    <?php
    foreach(file('file.txt') as $line)
        echo 
    substr($line,0,18).'<br/>'.chr(10);
     
  3. Solker

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

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    c0rp$e
    Я не телепат, что бы написать регулярное выражение, которое будет парсить то, что тебе нужно.
    preg_match_all($patter,$homepage, $out);
    замени на
    preg_match_all($pattern,$homepage, $out);
     
  4. RayzeR0

    RayzeR0 New Member

    Joined:
    21 Jun 2007
    Messages:
    6
    Likes Received:
    2
    Reputations:
    0
    Solker спасибо
     
  5. ReduKToR

    ReduKToR Active Member

    Joined:
    5 Jan 2009
    Messages:
    257
    Likes Received:
    179
    Reputations:
    4
    Вообщем хз куда запостить....возникла трабла......
    Скрипт спокойно работает на денвере(пыха 5)
    но не работает на серере(пыха 5.3)
    просьба глянуть,и сказать,какие хрени этого кода удалены(заменены) в пыхе 5.3


    PHP:
    $num1 rand(100,2222);
    $num=(string)$num1;
    $im = @ImageCreate (70,20);
    header ('Content-type: image/png');
    $background_color ImageColorAllocate ($im0xfc0xfc0xff);
    $text_color ImageColorAllocate ($im101010);

    $color1 ImageColorAllocate ($im1201520);

    for (
    $i=1$i<6$i++)
    {
        
    $idq rand(17);
        
    imageellipse($im0030*$idq15*$idq$text_color);
    }

    for (
    $i=1$i<100$i++)
    {
        
    $x rand(190);
        
    $y rand(119);
        
    imageline($im$x$y$x$y$color1);
    }

    for(
    $i=0;$i<strlen($num);$i++)
    {
            
    ImageString($im58+13*$i+rand(-2,2), 3+rand(-2,2),$num[$i], $text_color);
    }

    ImagePng ($im);
    ImageDestroy($im);
    if(isset(
    $_REQUEST[session_name()])){
        
    session_start();
    }
    if(
    $_REQUEST[session_name()]){
        
    $_SESSION['captcha_keystring'] = $num1;
    }
     
  6. Failure

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

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    дело не в php, а думаю отсутствует GD либа на сервере (phpinfo в помощь)
    З.Ы. юзай mt_rand, а не rand
    З.Ы.Ы.
    PHP:
    for($i=0;$i<strlen($num);$i++)
    в каждом выполнении цикла будет выполнятся ф-ция strlen, так что присвой лучше длину в еще 1 переменную и её и юзай в цикле
     
  7. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Есть файл const.php
    PHP:
    <?php
    $msg
    ['hello'] = 'Hello, '$name;
    ?>
    И есть файл, в котором этот скрипт инклудится в начале, но $name задается после инклуда. Как правильно сделать такое? Всякие быдлокоды типа инклуда после декларирования переменной и вывода текста в самом индексе мне не подходят.
     
  8. Failure

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

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    PHP:
    function hello() {
    global 
    $name;
    $msg['hello'] = 'Hello, '.$name;
    }
    инклудь когда угодно, после объявления переменной вызываешь ф-цию, эт первое что пришло в голову =\
     
    1 person likes this.
  9. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    И вправду, я вовсе забыл о global :) thx...
     
  10. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Этот способ работает, но у меня еще по-другому и global не подойдет:)
    Есть три файла.
    1. (index.php) С этого вызывается функция.
    2. (functions.php) Здесь сама функция.
    3. (constants.php) А здесь текст сообщения.

    Из файла 1 вызывается функция в файле 2, переменная с текстом которой есть в файле 3.

    Тоесть так:

    index.php
    PHP:
    include ('constants.php');
    include (
    'functions.php');

    $name $_POST['name'];
    display_message($m['reg_success']);
    functions.php
    PHP:
    function display_message($message)
    {
        echo 
    '<center><div class="msg"><br>' $message .
            
    '<br><br></div></center><br />';
    }
    constants.php
    PHP:
    $m['reg_success'] = $name ', ваша регистрация завершена!';
    Как поступать? Как сделать структуру?
     
    #13870 mailbrush, 12 Feb 2010
    Last edited: 12 Feb 2010
  11. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Ну какбе ты в файле constants.php уже назначил значение массиву с пустой переменной $name и дальше ему побоку, что ты назначаешь $name.
    Если интересует именно такая реализация, то переменные всегда назначай в самом начале файла.

    index.php:
    PHP:
    $name $_POST['name']; 

    include (
    'constants.php'); 
    include (
    'functions.php'); 


    display_message($m['reg_success']); 
     
  12. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Это будет нерационально с точки зрения грамматики кода. Я пишу профессиональную систему на PHP, для себя, целью которой есть изучение именно этого (грамматики). Столкнулся с такой проблемой.
     
  13. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    mailbrush
    Code:
    $messages = array
    (
      'reg_success' => '%s, ваша регистрация завершена!',
      'hello'       => 'Hello, %s'
    );
    К грамматике это не относится.
     
  14. Failure

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

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    не ну на самом деле никак иначе, ты присваиваешь значение $m['reg_success'] (которому нужен $name) а потом уже объявляешь $name, по этому только 2 способа

    1) использовать global относительно $name в ф-ции display_message (действительно не профессионально)
    2) объявить в правильном порядке, с начало $name, а потом $m['reg_success'] (что я бы и сделал)
     
  15. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Так, пускай будет второй вариант. Но у меня еще не так :)
    PHP:
    ...
    if(
    условие)
    {
    $name 'Вася';
    include(
    'constants.php');
    display_message($m['reg_success']);
    }
    ...
    Потом в этом коде еще несколько раз выводится display_message, где текст указывается не везде. Разве нельзя никак иначе сделать, ибо 5-10 инклудов того же файла - это вообще ни в какие рамки не влезает.
     
  16. Failure

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

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    сделай класс, в который инклудится constants.php, и получается каждый раз когда тебе надо display_message просто будешь вызывать его из класса, в зависимости от условия меняя или не меняя $name.
    Получается у тебя в наличии весь constants.php и удобно вызывать display_messages, меняя $name когда тебе надо
     
  17. Corpy

    Corpy New Member

    Joined:
    18 Mar 2009
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    В общем есть форма:
    <select>
    <option>1</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    </select>
    и так до 30-го числа
    Потом вторая форма
    <select>
    <option>Январь</option>
    <option>Февраль</option>
    </select>
    и так далее
    Как мне с помощью php, к примеру - вывести 21 Января на екран.
     
  18. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    В бд (mySQL) есть 2 уникальных поля u1 и u2
    И при запросе в бд возникает ошибка что поле u1 или u2 уже имеет такое значение
    Как причитать что данное значение уже есть, и в каком поле оно повторяется?

    как получить текущую дату для отправление в бд (тип поля в бд: datetime)? // date("Y-m-d H:i:s") помогло
     
    #13878 НTL, 12 Feb 2010
    Last edited: 13 Feb 2010
  19. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    PHP:
    <select>
    <
    option>1</option>
    <
    option>3</option>
    <
    option>4</option>
    <
    option selected>5</option>
    <
    option>6</option>
    <
    option>7</option>
    </
    select>
    <
    select>
    <
    option selected>Январь</option>
    <
    option>Февраль</option>
    </
    select>
    Не?
     
    1 person likes this.
  20. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    Может ему надо :
    PHP:
    <select name=day> 
    <option>1</option> 
    <option>3</option> 
    <option>4</option> 
    <option selected>5</option> 
    <option>6</option> 
    <option>7</option> 
    </select> 
    <select name=month> 
    <option selected>Январь</option> 
    <option>Февраль</option> 
    </select>

    <?
    echo "$_POST[day] $_POST[month]";
    ?>

     
    1 person likes this.
Thread Status:
Not open for further replies.