Задаем вопросы по РНР

  1. Vidioedem,
    а учебник достать и почитать совсем лень)

    if($_POST['str']==1)
    echo "sait1.ru";
    if($_POST['str']==2)
    echo "sait2.ru";
    if($_POST['str']==3)
    echo "sait3.ru";
     
  2. PHP:
    <html>
    <
    head>
    <
    script type="text/javascript">
    function 
    show() {
            var 
    field document.getElementById('num').value;
            var 
    linkdiv document.getElementById('link');         
            var 
    link 0;
            if(
    field == '1')
            {
                    
    link '<a href="http://site1.ru">site1.ru</a>';
            }
            else if(
    field == '2')
            {
                    
    link '<a href="http://site2.ru">site2.ru</a>';
            }
            else
            { return 
    false; }
            
    linkdiv.innerHTML link;
    }
    </script>
    </head>

    <input type="text" id="num" /><input type="button" value="Send" onclick="show()"/>
    <div id="link"></div>

    </html>
     
  3. Hookman, до оператора switch учебник не дочитал?)
     
  4. Пардоньте, о не любители ELIF :))

    PHP:
    <html>
    <
    head>
    <
    script type="text/javascript">
    function 
    show() {
            var 
    field document.getElementById('num').value;
            var 
    linkdiv document.getElementById('link');         
            var 
    link 0;
            switch(
    field) {

                    case 
    '1':
                    
    link '<a href="http://site1.ru">site1.ru</a>';
                    break;

                    case 
    '2':
                    
    link '<a href="http://site2.ru">site2.ru</a>';
                    break;

                    default:
                    return 
    false;
                    break;
            } 
            
    linkdiv.innerHTML link;
    }
    </script>
    </head>

    <input type="text" id="num" /><input type="button" value="Send" onclick="show()"/>
    <div id="link"></div>

    </html>
     
  5. Hookman, напиши код из 20 альтернатив с elseif и с switch, и сравни. :)
    Код должен быть самодокументируемым. А не набором символов :)

    Или другими словами, пиши всегда код так - будто бы за тобой его будет сопровождать псих который знает твой адрес :))
     
  6. В данном случае всего три варианта:) Я с удовольствием использую switch когда их более двух-трёх:)
     
  7. PHP:
    <form action="<? echo basename($_SERVER['PHP_SELF']); ?>" method="POST"> 
    <input type="text" name="num" value="" /> 
    <input type="submit" name="submit" value="Enter"/> 
    </form>
    <?php
    $urls 
    = array( => 'http://xaker.name/'=> 'http://lytgeygen.ru/'=> 'http://google.ru/');
    if (isset(
    $_POST['num'])) { echo '<a href="'.$urls[$_POST['num']].'">ссылка на '.$urls[$_POST['num']].'</a>'; }
    ?>
    :idea:
     
  8. b3
    Можно было в action ничего не указывать, автоматически обработчик был бы этим файлом, и в массиве можно было ключи не указывать, они бы автоматом принимали числовые значения.
     
  9. b3,
    это ведь при условии ввода только цифр, а в массиве цифры ведь можно заменить на слова и т.п.
     
  10. b3
    На данный момент там прописаны цифры по этому я и написал глупо указывать ТО что идет по умолчанию.
     
  11. Вопрос по парсингу, натолкнулся на одни грабли которые не могу решить.
    Что бы было наглядно объясню что надо
    Есть 2 страницы которые надо парсить, например:
    1_http://lib.rus.ec/b/217770
    2_http://lib.rus.ec/b/140969

    Мне надо спарсить аннотацию.
    пишу:
    preg_match("#<h2>Аннотация</h2>\n<p>(.*)</p>#miU", $data, $description);
    Но с первой ссылкой работает, а со второй нет, как я понял из за того что там встречается тег <br />

    Чувствую что ответ где то рядом, но не могу найти. :(
     
  12. (c)php.net
     
  13. У тебя наверно PHP 4 стоит. preg_ это для PHP 5 там произошли некоторые изменения.
     
  14. У меня php5, я цитирую php.net, там документация устарела? :wassat:
     
  15. А, не так понял. думал у тебя ошибка выскакивает.

    Ток не понял как мне поможет preg_match_all мне не все надо вытащить, а один. Но в нем тег, прошу помочь правильно составить регулярку чтоб спарсило аннотацию со второй ссылки.
     
  16. Либо через preg_match_all() выводи из массива результатов.
    Либо, (я ща спать ложусь) я с утра гляну на хтмл и попробую составить регулярку)
     
  17. Второй вариант предпочтительнее :)

    П.С. Спок, тоже пойду спать. :)
     
  18. Два разных текста, затупил я :) preg_match_all() тут не надо)

    • Слеш(/) от хтмл тегов нужно экранировать.
    • После /h2 ты строго указал \n, а там ещё пробел может быть.
    • После br идёт переход каретки, то же самое что и после /h2.

    PHP:
    '#<h2>Аннотация<\/h2>(\n|\s)*<p>(.|\s|\n)*<\/p>#'
     
  19. Hookman,
    Что то всеравно не получается как надо :(
    Можешь глянуть общую картину и что я не так делаю?
     
  20. b3
    Так норм?
    PHP:
    <?php

    $url_1 
    'http://lib.rus.ec/b/217770';
    $url_2 'http://lib.rus.ec/b/140969';

    $fp_1 file_get_contents($url_1);
    $fp_2 file_get_contents($url_2);

    if(
    preg_match('#<h2>.*<\/h2>.*<p>(.*)<\/p>#Uis',$fp_1,$m))
    echo 
    $url_1.'<br>'.$m[1].'<hr>';

    if(
    preg_match('#<h2>.*<\/h2>.*<p>(.*)<\/p>#Uis',$fp_2,$m))
    echo 
    $url_2.'<br>'.$m[1].'<hr>';
    ?>
    Код:
    http://lib.rus.ec/b/217770
    Впервые на русском — новая книга самого знаменитого мастера современной японской литературы, сборник колонок, написанных им для модного женского журнала «Ан-ан». С фирменной легкостью и недосказанностью, виртуозно балансируя на грани бытового очерка и аллегории, Мураками рассуждает о ресторанах и одежде, о коллекционировании виниловых пластинок и фильме Вима Вендерса «Клуб „Буэна-Виста“», о кошках и феминизме, о пончиках и вечернем бритье, о беге трусцой и безотчетной нелюбви к гольфу.
    http://lib.rus.ec/b/217770
    2018 год, Зона отчуждения, - сталкер-отшельник по прозвищу Курт, вернувшись в Зону для того что бы последний раз попрощаться с родным домом, который оказался в зоне поражения еще Первого Чернобыльского Взрыва, так и не находит в себе сил уйти за Периметр, поскольку только в Зоне он обретает тот долгожданный покой... И со временем все больше и больше убеждается в правильности своего выбора, так как во внешнем мире не осталось ничего и никого, что заставило бы сталкера вспомнить о прежней жизни. Жизни, которую он видел с разных ракурсов, - расцвет Коммунистической эпохи, падения онной, разруха девяностых, и наконец закат человечества наступавший медленно и неуклонно. 
    Зона дарит ему вечную молодость, в замен отбирая эмоции, - и ничто не в силах оживить душу Курта, даже порог его родного дома... Но все меняется, когда он становиться владельцам Артефакта Всевластия, который при активации заставлявший человеческий мозг работать с полной отдачей, в результате чего его владелец становился практически всесильным. На этом размеренное и философское течение жизни сталкера прекращается...
    
     
    1 человеку нравится это.