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

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

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

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    2SQLHACK
    спасибо, конечно, но код не работает.
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    PHP:
    <?php
    $str
    =<<<HERE
     <td class="label">Пол:</td>
         <td class="data">
          <div class="dataWrap">
           <a href='/gsearch.php?from=people&c[sex]=1'>женский</a>
          </div>
         </td>
    HERE;
    preg_match("/sex\]=(\d)'>(.+?)<\/a>/"$str$match);

    print_r($match);
    ?>
     
    _________________________
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Играть так играть:)

    PHP:
    <?php
    $str 
    " <a href='/gsearch.php?from=people&c[sex]=1'>женский</a>"
    preg_match_all ("|a href=.*people&c\[.*\].*>(.*)</a>|",$str,$arr);
    print_r ($arr[1]);
    ?> 
     
  4. SQLHACK

    SQLHACK Остались только слоны

    Joined:
    27 Sep 2006
    Messages:
    437
    Likes Received:
    372
    Reputations:
    407
    во как , у меня работает , а у тя нет)))
    нуну
     
    _________________________
    1 person likes this.
  5. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Подскажите кто нибудь хорошую книгу по пхп, но обязательно с примерами.
     
    1 person likes this.
  6. nub-hacker

    nub-hacker Banned

    Joined:
    23 Jun 2009
    Messages:
    69
    Likes Received:
    5
    Reputations:
    -10
    Подскажите электронную литру по PHP, надо чтобы в книге было полно практических задач и примеров, а не сплошная теория которая на следующий день забывается.
    Но не для полного нуба, (не с 0-ля я основы знаю + C++). и не толстая, а то лень учить.
    с меня +

    Самое главное научиться эфективно юзать PHP, и писать свои CMS, etc. И понимать спокойно сорцы других CMS.
     
    #11666 nub-hacker, 12 Sep 2009
    Last edited: 12 Sep 2009
  7. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Откройте глаза!

    http://forum.antichat.ru/thread8721.html
     
    1 person likes this.
  8. Jerri

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

    Joined:
    12 Jul 2009
    Messages:
    136
    Likes Received:
    377
    Reputations:
    22
    "Проффесиональное программирование на PHP" - Джордж Шлосснейгл
     
    4 people like this.
  9. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    Использую загрузчик файлов отсюда http://swfupload.org/
    Если файл состоял из русских букв то получаем
    из
    PHP:
    $_FILES['Filedata']['name'
    вот такую бредятину:
    RњRµR¶RґSѓ_RЅRµR±RѕRј_Ryo_R·RµRјR»RµR№
    Хотя было:
    Между небом и землей
    В какой кодировке RњRµR¶RґSѓ_RЅRµR±RѕRј_Ryo_R·RµRјR»RµR№
    определить так и не удалось поэтому и как решить проблему не знаю, хотя нет знаю iconv() только вот какая это кодировка ?
     
  10. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    KOI-8 наверн... хотя попробуй и из :
    PHP:
    $name iconv('UTF-8''WINDOWS-1251'$_FILE);
    $name iconv('KOI8_R''WINDOWS-1251'$_FILE);
    $name iconv('KOI8_U''WINDOWS-1251'$_FILE);
    вот топик на форуме про кодировку
    http://swfupload.org/forum/generaldiscussion/526
    вроде как UTF-8
     
    #11670 FireFenix, 12 Sep 2009
    Last edited: 12 Sep 2009
    1 person likes this.
  11. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Прогнал эту строку через кучу всевозможных кодировок, и результат отрицательный.
    Так что скорее всего проблема где-то в коде...
    Попробуйте испытать это дела на файлах:
    а.jpg
    б.jpg
    я.jpg
    (можно и без расширения) И посмотрите на HEX коды...
     
    1 person likes this.
  12. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    UTF-8 пробовал сразу же как заметил проблему не помогло.
    Сейчас остальное попробовал, только некоторые символы поменялись
    например KOI8_R выдал R‘S‹R»Rѕ_Ryo_RїSЂRѕS€R»Rѕ
    a.mp3 - ./files/R°.mp3
    я.mp3 - ./files/SЏ.mp3
    В коде нет проблем, до этого стоял обычный загрузчик и обрабатывал как русские так и англ названия на ура, так же из mp3 берутся id тэги и с ними все отлично, так же если переименовать файл то он воспроизводится через flash player следовательно файл не бьется!
    UPDATE:
    Опа решил проблему, только я в шоке =)
    PHP:
    $_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']);
    Не работало!

    PHP:
    $_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']);
    $_FILES['Filedata']['name'] = iconv('WINDOWS-1251''UTF-8'$_FILES['Filedata']['name']);
    $_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']);
    Заработало :eek:
    Не понимаю логики :(
     
    #11672 KaMiKadZe, 12 Sep 2009
    Last edited: 12 Sep 2009
  13. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Ты может принятое декодировал.... а вывод на страницу в cp1251? может оно обратно в утф перевело
     
  14. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    Да и я уже как неделю усвоил перед тем как работать с данными принятыми по ajax нужно их сразу же переводить в windows-1251, иначе после работы с ними уже не переведешь и будут каракули навсегда.
    На страницу ничего не выводится, сразу в базу идет, а база cp1251_general_ci да и названия файлов перед тем как идти в базу транслируются (Было-стало в Bilo-stalo)и удаляются пробел,&,'," и прочие знаки которые могут помешать отдать файл через браузер.
     
  15. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Народ, вопрос наверное не из простых..
    дан текстовой файл (юникс утф8)
    суть вот в чём: надо каждую строчку этого файла занести в массив. Думал юзать file(), да есть тут одна особенность: обратите внимание на символ '\' в коде, а вернее на комбинацию 'перевод строки' + '\' + перевод строки, так вот, надо эту комбинацию учитывать как просто символ в контенте "текст1" или "текст2" и т.п. и не использовать их как команду для разбивки текста в массивы... .т.е. в итоге, как видно, у нас должно быть три значение в массиве:
    Надеюсь, понятно обьяснил)) Или всё придётся preg_replace'ом заменить их сначала на что-то отличное от перевода строки, а уж потом юзать file()???
     
  16. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    ааа, всё, нашёл preg_split))))))
     
  17. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    PHP:
    <?php

         $file 
    'file.txt';
         
    $file file($file);

         
    $i 1;

         foreach (
    $file as $line)
         {
             if (
    substr($line01) == $i)
             {
                 
    $array[] = $line;
                 
    $i++;
             }
             else
             {
                 
    $array[count($array) - 1] .= $line;
             }
         }
         
    print_r($array);

    ?>
    Без использования регулярок :)
    Выведет:

    Code:
    Array
    (
        [0] => 1|текст1|текст2|текст3
    
        [1] => 2|текст1|текст2
    \
    текст3
    \
    текст4|текст5
    
        [2] => 3|текст1|текст2|текст3
    )
    
     
    2 people like this.
  18. RedBull@12

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

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    имею мнение, что данный код сработает ТОЛЬКО в одном случае, что собственно и было видно следующих постах.
    только при
    PHP:
    $name iconv('KOI8_U''WINDOWS-1251'$_FILE);
    т.к. иконв возвращает только в одном случае если входящая кодировка указана верно. поэтому выше представленный код НЕ верен. и имеет место быть только в таком виде:
    PHP:
    $name['UTF'] = iconv('UTF-8''WINDOWS-1251'$_FILE);
    $name['KOI8R'] = iconv('KOI8_R''WINDOWS-1251'$_FILE);
    $name['KOI8U'] = iconv('KOI8_U''WINDOWS-1251'$_FILE);
    и после удалить все элементы массива которые пусты.
    останется только ОДИН элемент массива в ключе которого будет кодировка текста
     
  19. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    RedBull@12,
    Эм...Вообще-то тот код был наводкой =)
    Поменять имя переменной куда ложим результат дело пары секунд, да и зачем делать ложить в массив, а потом еще удалять пустые элементы когда достаточно просто проверить все варианты и найти рабочий ?
     
  20. RedBull@12

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

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    код представленный принципиально не верный, ибо он верен только в одном случае.
    а на сколько "дешевле" проверить все варианты допустим если будет гораздо больше. а во-вторых зачем проверять чем-то когда 2 функции вернут нужный результат. и я сказал именно об особенности функции iconv. о то что если входящая кодировка указана не верно то вернет пустой результат, и исправил приведенный код, а не показал как правильно проверять кодировку.
     
Thread Status:
Not open for further replies.