PHP, не работают регулярки

Discussion in 'PHP' started by Gruberoid, 3 Jul 2012.

  1. Gruberoid

    Gruberoid New Member

    Joined:
    13 Jun 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    День добрый народ!
    Есть вопрос, всю голову сломал..
    суть в следующем:
    Имеется HTML код:
    Code:
    <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                  Город:
                 </td>
                 <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                  &nbsp;Рязань
                 </td>
                </tr>
               <tr>
               <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                Адрес:
               </td>
               <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                &nbsp;ул. Радищева, д. 61, оф. 25
               </td>
              </tr><tr>
               <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                Телефон:
               </td>
               <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                &nbsp;995547
               </td>
              </tr><tr>
                 <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                  Адрес электронной почты:
                 </td>
                 <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                  &nbsp;<a href="mailto:[email protected]">[email protected]</a>
                 </a>
                </td>
               </tr><tr>
                  <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                   URL / Website:
                  </td>
                  <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                   &nbsp;<a rel="nofollow" href="/out.php?ID=9999&p=" target="_blank">www.dialog-r.ru
                         </a>              </td>
                 </tr><tr>
               <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                Директор:
               </td>
               <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                &nbsp;Чепурных Елена Сергеевна
               </td>
              </tr><tr>
              <td valign="top" align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
               Расширенная информация:
              </td>
              <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
              
    
    <br />
               </td>
             </tr></td>
             </tr><tr>
               <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                Время работы:
               </td>
               <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                9.00-20.00<br>выходной: 9.00-14.00
               </td>
              </tr><tr>
               <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                Отзывы:
               </td>
               <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                <a href='#comment'><u>Прочитать/оставить комментарий к фирме</u></a>
               </td>
              </tr><tr>
               <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                Специальная информация:
               </td>
               <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                &nbsp; ИД Желтые страницы готов поделиться секретной информацией: тел. 258424.
               </td>
              </tr><tr>
               <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                Вакансии:
               </td>
               <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                &nbsp; <a target=_blank href='/mail/vakans.php?name=Диалог, образовательный центр, ООО' onmouseover="Tip('(Добавляются самой организацией)')" onmouseout="UnTip()">Добавить/редактировать вакансии </a>
               </td>
              </tr><tr>
               <td align="right" valign="middle" width="10%" bgcolor="#F1F1EA">
                 Наши потребности:
               </td>
               <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                &nbsp; <a target=_blank href='/mail/tender.php?name=Диалог, образовательный центр, ООО' onmouseover="Tip('(Если организация выставляет товар или услугу на тендер, она добавляет это здесь)')" onmouseout="UnTip()">Добавить/редактировать потребности</a>
               </td>
              </tr><tr>
    Использую регулярное выражение:
    Code:
    preg_match_all('/<td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">(.*?)<\/td>/',$html,$list);
    В итоге выдает пустые значения. Думал что спать пора, но как выяснилось что в теле страницы донора, значения не расположены в одной строке и по этому как бы preg_match_all не находит искомой комбинации.
    Суть вопроса в следующем, как перед preg_match_all код донора привести в понятный вид для preg_match_all.
    Заранее благодарю.
     
  2. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    SimpleDom parser попробуй, регулярка гигантская.
    Сам вопрос не понятен конкретно,
     
  3. Gruberoid

    Gruberoid New Member

    Joined:
    13 Jun 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Я SimpleDom как раз таки и использую, а вопрос поясню...

    Код страницы донора, preg_match_all не понимает, вернее он его понимает, все норм, но в коде теги по которым идет ориентир, стоят не в одной строке а раскиданы по строкам, хотя идут последовательно, html интерпретатор это все понимает, а вот preg_match_all не видит эти теги и получается что выдача нулевая.
    Как эти теги поднять до нужного уровня.. пример:
    Code:
    <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">
                9.00-20.00<br>выходной: 9.00-14.00
               </td>
    нужно превратить в
    Code:
    <td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">9.00-20.00<br>выходной: 9.00-14.00</td>
    В первом случае preg_match_all не работает, а во втором прекрасно все работает.
     
  4. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Модификатор \s, он имитирует пробелы, и кажеться переносы строк, trimom можно привести строку в такой вид как у вас (strtrim).
     
  5. Apeckou

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

    Joined:
    23 Jan 2007
    Messages:
    143
    Likes Received:
    11
    Reputations:
    0
    если совсем уж по-варварски..

    $enter="
    ";

    $text="много поебени с переносом строк";

    $htext=htmlspecialchars($text);
    $htext=str_replace("$enter",'',$htext);
    $htext=str_replace("<br>",'',$htext);
    $htext=str_replace("\n","",$htext);

    echo("$htext рулит");
     
  6. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Это очень по варварски.
    Code:
    $htext=str_replace("<br>",'',$htext);
    br зачем трогать? Его только броузер интерпретрует как перенос, в строке это просто br
    PHP:
    $enter=
    "
    ;
    :eek:
     
  7. masolit

    masolit Member

    Joined:
    1 Dec 2010
    Messages:
    23
    Likes Received:
    20
    Reputations:
    0
    PHP:

    $content 
    base64_decode('PHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIxMCUiIGJnY29sb3I9IiNGMUYxRUEiPgogICAgICAgICAgICAgINCT0L7RgNC+0LQ6CiAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjkwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgICAgJm5ic3A70KDRj9C30LDQvdGMCiAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgIDx0cj4KICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjEwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgINCQ0LTRgNC10YE6CiAgICAgICAgICAgPC90ZD4KICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iOTAlIiBiZ2NvbG9yPSIjRjFGMUVBIj4KICAgICAgICAgICAgJm5ic3A70YPQuy4g0KDQsNC00LjRidC10LLQsCwg0LQuIDYxLCDQvtGELiAyNQogICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8L3RyPjx0cj4KICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjEwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgINCi0LXQu9C10YTQvtC9OgogICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjkwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgICZuYnNwOzk5NTU0NwogICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8L3RyPjx0cj4KICAgICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iMTAlIiBiZ2NvbG9yPSIjRjFGMUVBIj4KICAgICAgICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRizoKICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iOTAlIiBiZ2NvbG9yPSIjRjFGMUVBIj4KICAgICAgICAgICAgICAmbmJzcDs8YSBocmVmPSJtYWlsdG86ZGlhbG9nLXJAbWFpbC5ydSI+ZGlhbG9nLXJAbWFpbC5ydTwvYT4KICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICA8L3RyPjx0cj4KICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjEwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgICAgIFVSTCAvIFdlYnNpdGU6CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iOTAlIiBiZ2NvbG9yPSIjRjFGMUVBIj4KICAgICAgICAgICAgICAgJm5ic3A7PGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL291dC5waHA/SUQ9OTk5OSZwPSIgdGFyZ2V0PSJfYmxhbmsiPnd3dy5kaWFsb2ctci5ydQogICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgPC90cj48dHI+CiAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIxMCUiIGJnY29sb3I9IiNGMUYxRUEiPgogICAgICAgICAgICDQlNC40YDQtdC60YLQvtGAOgogICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjkwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgICZuYnNwO9Cn0LXQv9GD0YDQvdGL0YUg0JXQu9C10L3QsCDQodC10YDQs9C10LXQstC90LAKICAgICAgICAgICA8L3RkPgogICAgICAgICAgPC90cj48dHI+CiAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIxMCUiIGJnY29sb3I9IiNGMUYxRUEiPgogICAgICAgICAgINCg0LDRgdGI0LjRgNC10L3QvdCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y86CiAgICAgICAgICA8L3RkPgogICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjkwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAKCjxiciAvPgogICAgICAgICAgIDwvdGQ+CiAgICAgICAgIDwvdHI+PC90ZD4KICAgICAgICAgPC90cj48dHI+CiAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIxMCUiIGJnY29sb3I9IiNGMUYxRUEiPgogICAgICAgICAgICDQktGA0LXQvNGPINGA0LDQsdC+0YLRizoKICAgICAgICAgICA8L3RkPgogICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSI5MCUiIGJnY29sb3I9IiNGMUYxRUEiPgogICAgICAgICAgICA5LjAwLTIwLjAwPGJyPtCy0YvRhdC+0LTQvdC+0Lk6IDkuMDAtMTQuMDAKICAgICAgICAgICA8L3RkPgogICAgICAgICAgPC90cj48dHI+CiAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIxMCUiIGJnY29sb3I9IiNGMUYxRUEiPgogICAgICAgICAgICDQntGC0LfRi9Cy0Ys6CiAgICAgICAgICAgPC90ZD4KICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iOTAlIiBiZ2NvbG9yPSIjRjFGMUVBIj4KICAgICAgICAgICAgPGEgaHJlZj0nI2NvbW1lbnQnPjx1PtCf0YDQvtGH0LjRgtCw0YLRjC/QvtGB0YLQsNCy0LjRgtGMINC60L7QvNC80LXQvdGC0LDRgNC40Lkg0Log0YTQuNGA0LzQtTwvdT48L2E+CiAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+PHRyPgogICAgICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iMTAlIiBiZ2NvbG9yPSIjRjFGMUVBIj4KICAgICAgICAgICAg0KHQv9C10YbQuNCw0LvRjNC90LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjzoKICAgICAgICAgICA8L3RkPgogICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSI5MCUiIGJnY29sb3I9IiNGMUYxRUEiPgogICAgICAgICAgICAmbmJzcDsg0JjQlCDQltC10LvRgtGL0LUg0YHRgtGA0LDQvdC40YbRiyDQs9C+0YLQvtCyINC/0L7QtNC10LvQuNGC0YzRgdGPINGB0LXQutGA0LXRgtC90L7QuSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5OiDRgtC10LsuIDI1ODQyNC4KICAgICAgICAgICA8L3RkPgogICAgICAgICAgPC90cj48dHI+CiAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSIxMCUiIGJnY29sb3I9IiNGMUYxRUEiPgogICAgICAgICAgICDQktCw0LrQsNC90YHQuNC4OgogICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjkwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgICZuYnNwOyA8YSB0YXJnZXQ9X2JsYW5rIGhyZWY9Jy9tYWlsL3Zha2Fucy5waHA/bmFtZT3QlNC40LDQu9C+0LMsINC+0LHRgNCw0LfQvtCy0LDRgtC10LvRjNC90YvQuSDRhtC10L3RgtGALCDQntCe0J4nIG9ubW91c2VvdmVyPSJUaXAoJyjQlNC+0LHQsNCy0LvRj9GO0YLRgdGPINGB0LDQvNC+0Lkg0L7RgNCz0LDQvdC40LfQsNGG0LjQtdC5KScpIiBvbm1vdXNlb3V0PSJVblRpcCgpIj7QlNC+0LHQsNCy0LjRgtGML9GA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINCy0LDQutCw0L3RgdC40LggPC9hPgogICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8L3RyPjx0cj4KICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjEwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgICDQndCw0YjQuCDQv9C+0YLRgNC10LHQvdC+0YHRgtC4OgogICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjkwJSIgYmdjb2xvcj0iI0YxRjFFQSI+CiAgICAgICAgICAgICZuYnNwOyA8YSB0YXJnZXQ9X2JsYW5rIGhyZWY9Jy9tYWlsL3RlbmRlci5waHA/bmFtZT3QlNC40LDQu9C+0LMsINC+0LHRgNCw0LfQvtCy0LDRgtC10LvRjNC90YvQuSDRhtC10L3RgtGALCDQntCe0J4nIG9ubW91c2VvdmVyPSJUaXAoJyjQldGB0LvQuCDQvtGA0LPQsNC90LjQt9Cw0YbQuNGPINCy0YvRgdGC0LDQstC70Y/QtdGCINGC0L7QstCw0YAg0LjQu9C4INGD0YHQu9GD0LPRgyDQvdCwINGC0LXQvdC00LXRgCwg0L7QvdCwINC00L7QsdCw0LLQu9GP0LXRgiDRjdGC0L4g0LfQtNC10YHRjCknKSIgb25tb3VzZW91dD0iVW5UaXAoKSI+0JTQvtCx0LDQstC40YLRjC/RgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQv9C+0YLRgNC10LHQvdC+0YHRgtC4PC9hPgogICAgICAgICAgIDwvdGQ+CiAgICAgICAgICA8L3RyPjx0cj4=');

    preg_match_all('@<td align="left" valign="middle" width="90%" bgcolor="#F1F1EA">\n\s+(.*)<br>@'$content$matches);
    echo 
    $matches[1][0];
     
    #7 masolit, 4 Jul 2012
    Last edited: 4 Jul 2012
  8. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    жгете... ответ уже был дан

     
  9. Gruberoid

    Gruberoid New Member

    Joined:
    13 Jun 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Спасибо, всем кто дал дельный совет, поставил +