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

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

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

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    PHP:
    <?
    $text="123456789sdfkjnsodfnsdnfjsn";
    preg_match('|([0-9]+)|',$text,$out);
    echo 
    $out[0];
    ?>
     
  2. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Хех, а ведь в регулярках есть дигит \d
    PHP:
    <?
    $text="7902bdfzss666";
    preg_match('/([\d]+)/',$text,$out);
    echo 
    $out[0]
    ?>
     
    1 person likes this.
  3. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Если формат записи строго xxxYYY где xxx - цифры, то логичнее всего сделать так:

    PHP:
    <?
    $str "1234qwer";
    echo 
    intval($str);
     
  4. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    =\ тогда уже
    PHP:
    preg_match('/(\d+)/',$text,$out);
     
    1 person likes this.
  5. diznt

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

    Joined:
    31 Jan 2008
    Messages:
    432
    Likes Received:
    164
    Reputations:
    -19
    ап
     
  6. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0

    В ПХП нет указателей, но операция -> используется для получения доступа к методам и свойствам объекта.
     
  7. Balvan

    Balvan Member

    Joined:
    11 Mar 2009
    Messages:
    66
    Likes Received:
    5
    Reputations:
    0
    Добрый вечер, ачатовцы! =)
    Подскажите пожалуйста или дайте скрипт(ы) чтобы при заливки картинки на сайт она обесцвечивалась(становилась чёрно-белая)
     
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Было уже, именно в этой теме, юзай поиск:

    PHP:
    <pre>
    <? 
    @set_time_limit(0); 
    @ini_set("display_errors","1");


    $s_file="1.jpg";           //Файл исходник
    $r_file="2.jpg";           //Куда сохранить результат
    wb($s_file,$r_file);   //Запускаем функцию преобразования картинки



    /* Функция для преобразования цветной картинки в черно-белую */
    Function wb($file1,$file2) {

    //Получаем данные о картинке (высота и ширина) 
    list($width, $height) = getimagesize($file1); 

    // Начинаем работу над исходником
    $source = imagecreatefromjpeg($file1); 
    $bwimage= imagecreate($width, $height); 

    //Создаем 256 цветную палитру
    for ($c=0;$c<256;$c++) 
    {
    $palette[$c] = imagecolorallocate($bwimage,$c,$c,$c);
    }

    //Функция для преобразования rgb-пикселей в черно-белый цвет
    function yiq($r,$g,$b) 
    {
    return (($r*0.299)+($g*0.587)+($b*0.114));
    }

    //Считываем цветовые пиксели (один за другим)
    for ($y=0;$y<$height;$y++) 
    {
    for ($x=0;$x<$width;$x++) 
    {
    $rgb = imagecolorat($source,$x,$y);
    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b = $rgb & 0xFF;

    //А здесь мы преобразуем все цветные пиксели в черно-белые с помощью функции yiq
    $gs = yiq($r,$g,$b);
    imagesetpixel($bwimage,$x,$y,$palette[$gs]);
    }


    // Сохраняем нашу получившуюся картинку
    imagejpeg($bwimage,$file2);
    ImageDestroy($bwimage);

    Echo "Done";
    }
    ?>

    </pre>

     
  9. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Читайте про ООП в PHP.
    Символ -> используется для обращения к методу или полю обьекта.
    Т.е.
    Например у нас есть класс "test_class", внетри него есть переменная $param, и функция t_func();
    Если мы хотим обратиться к ним внутри этого же класса то мы пишем:
    PHP:
    $this->param=4;
    $this->t_func();
    А если обращаемся из основного документа к которому подключили этот класс, то:
    PHP:
    $test_object = new test_class;
    $test_object->param=3;
    $test_object->t_func();
    И это рекомендую почитать:
    http://php.su/learnphp/phpoo/?classes
     
  10. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Старт.

    Да и вообще, тем кто решил заняться PHP:
    Первый скрипт на PHP я написал месяц назад.(давно хотел посмотреть почему этот язык так популярен, да ещё и свободное время появилось)

    Для первого эксперимента было выбрано написание простенького парсера.
    -Почему?
    1) Разобраться со стандартными средствами языка. (Условия, циклы, работа со строками, работа с переменными, функции, процедуры)
    2) Разобраться с регулярными выражениями.
    3) Разобраться с тем как работать с MySql из под PHP.(парсер заносил результат в таблицу БД)
    4) Разобраться с методами подключения к удалённым сайтам (cUrl, сокеты)
    Вооружившись книгой(купленной за год до этого :) ) и гуглом, я написал парсер для торрент движка tbdev за 2 дня.
    В ходе написания были выполнены все поставленные выше задачи.

    Рекомендую изначально привыкать к использованию функций.
    С чего я начал:
    1. Достал скрипт который подключался к удалённой странице и заносил её содержимое в переменную.
    Подправил этот скрипт под себя, и занёс в функцию.
    2. Сохранил 1 из страниц которую парсер должен читать на хард. Начал писать парсер(отдельный скрипт который читал ХТМЛ c харда) для этой страницы. После написания загнал его код в отдельную функцию.
    3. Начал писать скрипт который заносил данные в MySql, и тоже запихнул его в отдельную функцию.

    В итоге у меня появились следующие функции:
    1. Функция скачивания страцицы. (принимала ссылку и возвращала текст страницы в текстовой переменной)
    2. Функция парсер. (принимала тексторую переменную с кодом страницы и возвращала массив с данными)
    3. Функция сохранения данных. (принимала массив данных и заносила его в нужные колонки таблицы MySql)

    Удобство такого метода написания программ в том, что каждую функцию мы пишем и отлаживаем отдельно, после чего забываем о ней и переходим к следующей функции.(решаем каждую проблему отдельно)


    Далее я стал разбираться с ООП, и переписал скрипт в виде класса.
    В tbdev ссылки формируются так:
    PHP:
    http://tb.SITE.ru/details.php?id=1 //где ID-номер раздачи
    Скрипт для использования класса, стал выглядеть примерно так:
    PHP:
    <?
    include (
    "pars.inc"); //подключаем свой класс
    $par = new Pars(); //создаём обьект
    for ($i=500$i<2500$i++) { //указываем номера раздач для парсинга
    $par->Go($i); //Запускаем парсер
    }
    ?>
    Это конечно не лучшее применение ООП, но оно позволяет разобраться что к чему.


    В итоге, на приобретение начальных навыков чтения несложного кода ушло 3 дня.
     
    #8970 Gray_Wolf, 13 Mar 2009
    Last edited: 13 Mar 2009
  11. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    Gray_Wolf заведи себе блог и пиши там, извини конечно за резкость но тут твоим статьям немного не место.
     
  12. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    AkyHa_MaTaTa, +1
     
  13. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    2AkyHa_MaTaTa, -=Static=- какаяж это статья? Этот так, бред сумашедшего.
    (сам незнаю почему но у меня врождённое отторжение ко всему что касается блогов, дневников, etc.)
     
    1 person likes this.
  14. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    а по мне, так парень дело пишет, а не хрень, как 80% здесь
     
  15. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Если посмотреть на звание топа то - "
    PHP:
     Новичкамзадаем вопросы", конечно никто не спорит, может он и дело пишет, но немного в не том топе, я также могу написать как я 2 года назад начел разберать с пхп, да и каждый может, но имхо в определеном топе.
     
  16. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Pashkela +1
    То что он написал по крайней мере 80% отписывающихся в этой теме даже во сне не видели)
     
  17. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    PHP:
    <?php 
    echo "<title>Special For DJ</title> 
    <b>Сюда пишешь аськи в виде \"Много текста бла бла бла 123456;34%7№№ блаба\" а скрипт выберет только аськи!</b> 
    <form method=post> 
    <textarea name=uins rows=18 cols=60></textarea><br> 
    <input type=submit value='Давай ка сотрем лишнее!'>"

    if(isset(
    $_POST['uins'])) 

    $uins=explode("\r\n",$_POST['uins']); 
    echo 
    "<br><br><br><b>Result:</b><br><textarea rows=18 cols=20>"
    for(
    $i=0;$i<=count($uins);$i++) 

    preg_match("/([0-9]{6,9}[;]{1}[\S]{1,8})/",$uins[$i],$out); 
    echo 
    $out[$i]."\r\n"

    echo 
    "</textarea>"

    ?> 
    Почему даный скрипт обрабатывает только первых два номера?
     
  18. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    Есть мега логическая задача для браузерной игры : )

    В игре есть карта (возьмём 200*200)
    Карта собой представляет таблицу в БД по кадой точке...тоесть x1 y1, x1 y2, x1 y3....x200 y200
    Есть ячейка element которая отвечает за занятось клетки на игровом поле.

    Центр карты естественно точка x100 y100
    Игрок при старте выбирает направление в котором он хочет появиться (северо-запад, юго-восток и т.д.)
    Допустим он выбрал Юго-Восток значит он распологается в квадрате x100-x200 y100-y200 (нижний-правый квадрат)

    Задача: расположить игроков начиная с центра карты...(чтоб пресутствовало между ними растояние от 1 до 4 клеток и чтоб они друг на друга не попали)

    Задавайте вопросы, по поводу что уточнить.
     
  19. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    2mailbrush а вы почитайте описание функции preg_match :)
    И замените
    PHP:
    echo $out[$i]."\r\n";
    на
    PHP:
    echo $out[1]."\r\n";
     
    1 person likes this.
  20. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Gray_Wolf, спс!
     
    #8980 mailbrush, 13 Mar 2009
    Last edited: 13 Mar 2009
Thread Status:
Not open for further replies.