Получить в переменной определённый кусок HTML кода.

Тема в разделе "PHP", создана пользователем Дерзкий, 20 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Дерзкий

    Дерзкий Постоялец

    Регистр.:
    27 июн 2009
    Сообщения:
    100
    Симпатии:
    399
    Вобшем вот хтмл страница

    PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <
    html>
    <
    head>
        <
    meta http-equiv="Content-Type" content="text/html;charset=windows-1251">
        <
    title>ЯндексПаспорт</title>
        <
    meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>    <link rel="shortcut icon" href="//img.yandex.net/i/favicon.ico"/>

        <!--[if 
    gt IE 7]><!--><link rel="stylesheet" href="/css/_pass.css?9"/><!--<![endif]-->
        <!--[if 
    lt IE 8]><link rel=stylesheet href="/css/_pass.ie.css?9"><![endif]-->

        <
    script type="text/javascript" src="//js.static.yandex.net/jquery/1.3.2/_jquery.js"></script>
        <script type="text/javascript" src="//lego.static.yandex.net/2.0/common/js/_common-no-frame-check.js"></script>
        <script type="text/javascript" src="/js/_passport.js?3"></script>
        <script type="text/javascript">Lego.init({login:"tegtgge",locale:"ru"})</script>
        
        <script type="text/javascript" src="/js/inbox_http.js"></script>
        <script type="text/javascript" src="/pass_script.js?2"></script>
    </head>
    <body><table class="l-head">
        <tr>
            <td class="l-head-g"><i></i></td>
            <td class="l-head-l">
                <div class="b-head-logo">
                    <div class="logo"><a href="http://www.yandex.ru"><img src="//lego.static.yandex.net/2.0/common/block/b-head-logo/b-head-logo.png" alt="Яндекс"/></a></div>
                </div>
            </td>
            <td class="l-head-gl"><i></i></td>
            <td class="l-head-c">
                <table id="tabs" class="b-head-tabs">
                <tr>
                    <td><a href="http://www.yandex.ru">Поиск</a></td>
                    <td><a href="http://mail.yandex.ru">Почта</a></td>
                    <td><a href="http://maps.yandex.ru">Карты</a></td>
                    <td><a href="http://market.yandex.ru">Маркет</a></td>
                    <td><a href="http://news.yandex.ru">Новости</a></td>
                    <td><a href="http://slovari.yandex.ru">Словари</a></td>
                    <td><a href="http://blogs.yandex.ru">Блоги</a></td>
                    <td><a href="http://video.yandex.ru">Видео</a></td>
                    <td><a href="http://images.yandex.ru">Картинки</a></td>
                    <td class="more">
                        <div class="b-dropdown g-js" onclick="return {name:'b-dropdown'}">
                            <ul>
                                <li class="visible">
                                    <a class="or" href="http://www.yandex.ru/all"
                                        ><span class="b-pseudo-link"><span>ещё</span></span
                                        ><i class="arrow"><i class="b-icon"><i></i></i></i></a>
                                </li>
                                <li><a href="http://auto.yandex.ru">Авто</a></li>
                                <li><a href="http://adresa.yandex.ru">Адреса</a></li>
                                <li><a href="http://afisha.yandex.ru">Афиша</a></li>
                                <li><a href="http://money.yandex.ru">Деньги</a></li>
                                <li><a href="http://play.yandex.ru">Игрушки</a></li>
                                <li><a href="http://yaca.yandex.ru">Каталог</a></li>
                                <li><a href="http://moikrug.yandex.ru">Мой Круг</a></li>
                                <li><a href="http://narod.yandex.ru">Народ</a></li>
                                <li><a href="http://cards.yandex.ru">Открытки</a></li>
                                <li><a href="http://weather.yandex.ru">Погода</a></li>
                                <li><a href="http://rasp.yandex.ru">Расписания</a></li>
                                <li><a href="http://tv.yandex.ru">Телепрограмма</a></li>
                                <li><a href="http://fotki.yandex.ru">Фотки</a></li>
                                <li><a href="http://wow.ya.ru">Яру</a></li>
                                <li class="line"><a href="http://www.yandex.ru/all">Все&nbsp;сервисы</a></li>
                            </ul>
                        </div>
                    </td>
                
                </tr>
                </table>
                <div class="b-head-line">
                    <i class="b-round b-round_2"><i class="l t"><i></i></i><i class="r t"><i></i></i></i>
                        <strong class="name">паспорт</strong>
                    <i class="b-round b-round_2"><i class="l b"><i></i></i><i class="r b"><i></i></i></i>
                </div>

                <div class="b-head-menu">
                    <!-- MSIE5: в ссылках вместо пробелов д.б. &nbsp; -->
                    <table class="b-hmenu">
                    <tr>    
        
                        <td class="item first"><a href="http://passport.yandex.ru/passport?mode=passport">Персональные&nbsp;данные</a></td>
                        <td class="item"><a href="https://sauth.yandex.ru/passport?mode=passport">Платёжные&nbsp;данные</a></td>
                        <td class="item last"><a href="http://help.yandex.ru/passport/">Помощь</a></td>
            
                    </tr>
                    </table>
                </div>
            </td>
            <td class="l-head-gr"><i></i></td>
            <td class="l-head-r">
                <!-- У этой таблицы всегда 4 строки -->
                <table class="b-head-userinfo">
                <tr>
                    <td>                    <div class="user g-js" onclick='return {name:"b-head-userinfo.user"}'><b class="b-user"><a href="http://i.yandex.ru"><b>t</b>egtgge</a></b></div>
                    </td>
                    <td class="exit"><a href="http://passport.yandex.ru/passport?mode=logout">Выход</a></td>
                </tr>
                <tr>
                    <td colspan="2"><img src="http://clck.yandex.ru/redir/dtype=stred/pid=8/cid=2328/path=Passport.welcome/*http://img.yandex.net/i/zero.gif" width="1" height="1" border="0" /></td>
                </tr>
                <tr>
                    <td colspan="2"></td>
                </tr>
                <tr>
                    <td colspan="2"></td>
                </tr>
                </table>
            </td>
            <td class="l-head-g"><i></i></td>
        </tr>
        </table><script language="Javascript" type="text/javascript" src="/js/hintquestion.js"></script>
    <script type="text/javascript">
    $(function() {
        $('.g-print-passport a[href=#]').click(function(e) {
            e.preventDefault();
            this.blur();
            var myWin = window.open(
                '/printable.html',
                'printable_window',
                'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=700,height=500'
            );
            myWin.focus();
        });
    });
    </script>
    <iframe id="bufferframe" name="bufferframe" src="/dummy.html" style="width: 0px; height: 0px; border: 0px"></iframe>

    <div id="printable" style="display: none;">
        <table width="100%" class="content" cellspacing="0" cellpadding="0" border="0">
            <tr valign="middle">
                <td align="center">
                    <img src="http://img.yandex.net/i/logo100x43.png" width="100" height="43" border="0" alt="Яндекс" />
                </td>
                <td class="gap"><i></i></td>
                <td>
                    <h1>Паспорт</h1>
                </td>
            </tr>
            <tr valign="top">
                <td><br /></td>
                <td class="gap"><i></i></td>
                <td class="label">
                    <p>
                    Ниже перечислены данные, которые вы&nbsp;указали при регистрации на&nbsp;Яндексе.
                    Они&nbsp;могут вам&nbsp;понадобиться для&nbsp;восстановления доступа к&nbsp;службам Яндекса
                    в&nbsp;случае, если вы&nbsp;забудете пароль. Распечатайте листок и&nbsp;сохраните в&nbsp;надежном
                    месте, недоступном для&nbsp;чужих глаз.
                    </p>
                    <p>
                    Эти данные дают доступ к&nbsp;вашим персональным службам на&nbsp;Яндексе, так&nbsp;же
                    как&nbsp;кредитная карточка и&nbsp;PIN-код дают доступ к&nbsp;вашему счету в&nbsp;банке.
                    Не&nbsp;держите листок на&nbsp;рабочем столе, не&nbsp;приклеивайте его к&nbsp;монитору,
                    не&nbsp;бросайте&nbsp;его где&nbsp;попало. Помните, что&nbsp;ваша информационная безопасность &mdash; в&nbsp;ваших руках.
                    Будьте внимательны!
                    </p>
                </td>
            </tr>
            <tr valign="top">
                <td><br /></td>
                <td class="gap"><i></i></td>
                <td>
                    <h2>Персональные данные</h2>
                </td>
            </tr>
            <tr valign="top">
                <td align="center">
                    <img src="http://passport.yandex.ru/images/done.gif" width="79" height="99" border="0" alt="Ваш паспорт" />
                </td>
                <td class="gap"><i></i></td>
                <td>
                    <table width="100%" cellspacing="0" cellpadding="0" border="0">
                        <tr valign="top">
                            <td width="45%" class="label">
                                <div>Ваш&nbsp;e-mail: <strong>tegtgge@yandex.ru</strong></div>
                                <div>Логин: <strong>tegtgge</strong></div>
                                <div>Зарегистрирован: <strong>20.07.2009</strong></div>
                                <div>Имя: <strong>iihj</strong></div>
                                <div>Фамилия: <strong>erge</strong></div>
                            </td>
                            <td class="gap"><i></i></td>
                            <td width="55%" class="label">
                                <div>Контрольный вопрос:<br /><strong>Любимое блюдо</strong></div>
                                <div>Ответ: <strong>3333</strong></div>
                                <div>E-Mail: не&nbsp;указан</div>
                                <div>IP-адрес: 255.255.255.255</div>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </div>
    <table class="l-page l-page_12-60-16 l-page_indent">
    <tr>
        <td class="l-page-g"><i></i></td>
        <td class="l-page-l l-page-l_right">
    <br />    </td>
        <td class="l-page-gl"><i></i></td>
        <td class="l-page-c">
        <h1>Поздравляем, регистрация успешно завершена!</h1><table class="l-passform3 l-passform3_noindent">
    <tr>
        <td class="l-passform3-l">
                Ваш новый e-mail:    </td>
        <td class="l-passform3-g"><i></i></td>
        <td class="l-passform3-c">
                <span class="b-nobr">
                    <span class="b-predefined-field">
                        <span class="b-redletter">
                            tegtgge@yandex.ru
                        </span>
                    </span>
                </span>    </td>
        <td class="l-passform3-g"><i></i></td>
        <td class="l-passform3-r">
                <div class="b-hangover g-print-passport">
                    <div class="b-hangover-content b-hangover-content_right">
                        <a href="#"
                        ><img src="http://passport.yandex.ru/printer.gif" width="13" height="16" style="margin-right: 0.5em; vertical-align: middle;" alt="Печатать" border="0"
                        /></a><a href="#">Распечатать</a><br />на&nbsp;случай, если вы&nbsp;забудете пароль
                    </div>
                </div>    </td>
        <td class="l-passform3-g"><i></i></td>
    </tr>
    <tr>
        <td class="l-passform3-l">
                Логин:    </td>
        <td class="l-passform3-g"><i></i></td>
        <td class="l-passform3-c">
                <span class="b-nobr"><span class="b-predefined-field"><span class="b-redletter">tegtgge</span></span></span>    </td>
        <td class="l-passform3-g"><i></i></td>
        <td class="l-passform3-r">
    <br />    </td>
        <td class="l-passform3-g"><i></i></td>
    </tr>
                <tr>
        <td class="l-passform3-l">
                Имя и фамилия:    </td>
        <td class="l-passform3-g"><i></i></td>
        <td class="l-passform3-c">
                <span class="b-nobr">iihj erge            </span>    </td>
        <td class="l-passform3-g"><i></i></td>
        <td class="l-passform3-r">
    <br />    </td>
        <td class="l-passform3-g"><i></i></td>
    </tr>
    <tr>
        <td class="l-passform3-l">
                Секретный<br />вопрос и ответ:    </td>
        <td class="l-passform3-g"><i></i></td>
        <td class="l-passform3-c">
                    <span class="b-nobr">Любимое блюдо                </span>
                    <br />
                    <span class="b-nobr">
                        <span class="b-predefined-field">3333                    </span>
                    </span>    </td>
        <td class="l-passform3-g"><i></i></td>
        <td class="l-passform3-r">
    <br />    </td>
        <td class="l-passform3-g"><i></i></td>
    </tr>
    </table>
                
            <div class="l-indent-bottom">
            Держите ваш пароль в&nbsp;секрете и&nbsp;помните,
            что&nbsp;сотрудники Яндекса никогда
            и&nbsp;ни&nbsp;под&nbsp;каким предлогом не&nbsp;спросят
            пароль по&nbsp;телефону или&nbsp;электронной почте.
            </div>
            
                    <div class="l-indent">
                <h1 class="noindent">Что дальше</h1>
            </div>        
            <table class="l-3rdstep">
                <tr>
                    <td class="l-3rdstep-m">
                        <div class="h-form h-form_light">                    <a class="b-goto-service" href="http://clck.yandex.ru/redir/dtype=stred/pid=8/cid=942/*http://i.yandex.ru/">Начать пользоваться сервисами Яндекса</a>
                        <div class="b-3rdstep-logo g-png">
                            <a href="http://clck.yandex.ru/redir/dtype=stred/pid=8/cid=942/*http://i.yandex.ru/">
                                <img src="/images/3rd-step-yandex.png" border="0" alt="" />
                            </a>
                        </div>                    </div>
                    </td>

                    <td class="l-3rdstep-g"><i></i></td>
                    <td class="l-3rdstep-m">                    <form name="bigForm" action="http://passport.yandex.ru/passport?mode=welcome&ncrnd=273557" method="post" onsubmit="return checkBirthDate(this);">                        <input type="hidden" name="idkey" value="12n1248069383p9jtmzBxh" />                        <input type="hidden" name="step" value="three" />
                            <input type="hidden" name="filled" value="yes" />
                        
                            <div class="h-form">
                                <h1>Рассказать&nbsp;о&nbsp;себе еще&nbsp;немного</h1>
                                <!--Псевдоним:<br />
                                <input type="text" size="25" maxlength="30" name="nickname" value="" />-->
                                <div class="l-indent-small-bottom">
                                    Пол:&nbsp;&nbsp;
                                    <!--<label for="sex0"><input type="radio" class="b-pcheckbox" id="sex0" name="sex" value="0"  />предпочитаю не&nbsp;указывать</label><br />-->
                                    <span class="b-nobr">
                                    <label for="sex1"><input type="radio" id="sex1" class="b-pcheckbox" name="sex" value="1"  />мужской</label> &nbsp;&nbsp;
                                    <label for="sex2"><input type="radio" id="sex2" class="b-pcheckbox" name="sex" value="2"  />женский</label>
                                    </span>
                                </div>
                                <div class="l-indent-small-bottom">
                                    День рождения:<br />
                                    <span class="b-nobr"><input type="text" name="bday" value="" size="2" maxlength="2" style="width: 2em" />&nbsp;<select name="bmonth">                                    <option value="01"  selected="selected" >января</option>                                    <option value="02" >февраля</option>                                    <option value="03" >марта</option>                                    <option value="04" >апреля</option>                                    <option value="05" >мая</option>                                    <option value="06" >июня</option>                                    <option value="07" >июля</option>                                    <option value="08" >августа</option>                                    <option value="09" >сентября</option>                                    <option value="10" >октября</option>                                    <option value="11" >ноября</option>                                    <option value="12" >декабря</option>                                </select>&nbsp;<input type="text" name="byear" value="" size="4" maxlength="4" /></span>
                                </div>
                            </div>
                            <div class="h-form h-form_novindent h-form_last">
                                <div class="l-indent">
                                    <input type="submit" size="20" value="Сохранить" />
                                </div>
                            </div>
                        </form>                </td>
                                <td class="l-3rdstep-g"><i></i></td>
                    <td class="l-3rdstep-m"><br /></td>
            

                </tr>
            </table>    </td>
        <td class="l-page-gr"><i></i></td>
        <td class="l-page-r">
    <br />    </td>
        <td class="l-page-g"><i></i></td>
    </tr>
    </table>
    <img src="http://clck.yandex.ru/click/dtype=stred/pid=8/cid=482/path=passport:yandex:ru/*http://img.yandex.net/i/zero.gif" />

    <table class="l-cellar">
        <tr>
            <td class="l-cellar-g"><i></i></td>
            <td class="l-cellar-l">            <br />        </td>
            <td class="l-cellar-g"><i></i></td>
            <td class="l-cellar-r">
                <div class="b-copyright">
                    Copyright <span class="b-nobr">&copy; 2001—2009 &laquo;<a href="http://www.yandex.ru/">Яндекс</a>&raquo;</span><br />
                    <a href="http://company.yandex.ru/">О компании</a>
                </div>
            </td>
            <td class="l-cellar-g"><i></i></td>
        </tr>
    </table>


    </body>
    </html>
    из неё мне надо выташить в отдельные переменные или массив следуйшие данные tegtgge@yandex.ru и
    PHP:
    <div>Имя: <strong>iihj</strong></div>
                                <
    div>Фамилия: <strong>erge</strong></div>
    Подскажите как это можно реализовать?

    Если что сильно не пинайте, поскольку мои знания в пшп стремятся к нулю.
     
  2. whitewolff

    whitewolff Лимонадный Джо :)

    Регистр.:
    29 май 2007
    Сообщения:
    168
    Симпатии:
    33
    можно распарсить страницу двумя путями: с помощью строковых функций и с помощью регулярных выражений.
    попробуй с помощью строковых функций для начала (кури пхп.нет, функции обработки строк)
    вот на примере выборки мыла: ищем позицию начала мыла, потом ищем позицию конца адресса мыла, потом обрезаем код по этим двум параметрам.
    PHP:
    // $input - код который кормим парсеру.
    // $email - адрес мыла
    $x1 strpos($input,'<div>Ваш&nbsp;e-mail: <strong>') + strlen('<div>Ваш&nbsp;e-mail: <strong>'); // начало адреса мыла
    $x2 strpos($input'</strong></div>'$x1); // конец адреса мыла
    $email substr($input$x1,($x2-$x1)); // ($x2-$x1) - длина адреса мыла
     
    Дерзкий нравится это.
  3. midw0rk

    midw0rk Создатель

    Регистр.:
    1 окт 2008
    Сообщения:
    33
    Симпатии:
    7
    Можно воспользоваться регулярными выражениями и функцией preg_match, либо preg_match_all


    <?
    $sPattern = "/<div>Имя: <strong>(.*)<\/strong><\/div>/Umi";
    preg_match( $sPattern, $sString, $arMatches ); //Для Имени $arMatches[1]

    $sPattern = "/<div>Фамилия: <strong>(.*)<\/strong><\/div>/Umi";
    preg_match( $sPattern, $sString, $arMatches ); //Для Фамилии $arMatches[1]

    ?>


    Остальное по аналогии.
     
    Дерзкий нравится это.
  4. Rau1

    Rau1 Писатель

    Регистр.:
    12 ноя 2008
    Сообщения:
    2
    Симпатии:
    0
    спасибо большое
     
  5. Дерзкий

    Дерзкий Постоялец

    Регистр.:
    27 июн 2009
    Сообщения:
    100
    Симпатии:
    399
    Ещё раз простите нуба. но не могу понять как составить шаблон для preg_match_all

    Вобшем
    Код:
    </div></span><br><font color="#cf7300">Размер:  </font><font color="#9f0000">--</font></td>
                                      <td height="40" align="right" class="slink">  Просмотров: 2657 автор: <b><a onclick="return dropdownmenu(this, event, UserNewsMenu('href=&quot;http://www.super-sait.net/user/Remisxxx/&quot;', 'href=&quot;http://www.super-sait.net/user/Remisxxx/news/&quot;','Remisxxx', '5'), '170px')" onMouseout="delayhidemenu()" href="http://super-sait.net/user/Remisxxx/">Remisxxx</a></b> 3 июля 2009<br /><font color="#cf7300">Залито на:  </font><font color="#9f0000">НЕСКОЛЬКО ЗЕРКАЛ</font> |  <a href="http://super-sait.net/filmz/mult/94265-lednikovyjj-period-3-jera-dinozavrov-ice-age-dawn.html#comment"><font color="#cf7300">Отзывы (13)</font></a> | <a href="http://super-sait.net/filmz/mult/94265-lednikovyjj-period-3-jera-dinozavrov-ice-age-dawn.html"><font color="#cf7300">Подробнее</font></a></td>
                                    </tr>
                                  </table></td>
                                <td width="10" align="right" valign="top"><img src="/templates/Default/images/ab_53.gif" width="10" height="40" /></td>
    Вобшем из него надо вырвать ссылку
    Код:
    http://super-sait.net/filmz/mult/94265-lednikovyjj-period-3-jera-dinozavrov-ice-age-dawn.html
    Пробовал сделать всё это по шаблону
    \<a href=\"(.*)\"><font color=\"\#cf7300\">Подробнее<\/font><\/a>
    Вроде все спец символы экраниринорованы. Но он выдаёт. parse error

    Подкажите где на косячил.
     
  6. antn

    antn Постоялец

    Регистр.:
    11 июл 2009
    Сообщения:
    104
    Симпатии:
    30
    preg_match('~<a href=".+?"><font color="#cf7300">Подробнее</font></a>~', $text, $m);

    Не забывай обрабатывать htmlspecialchars_decode после извлечения из html.
     
Статус темы:
Закрыта.