2010-06-23 4 views
0

Хорошо, вот моя проблема. Я пытаюсь написать скрипт на PHP, который будет анализировать нашу систему заказов на работу и возвращать набор билетов, но я столкнулся с некоторой проблемой, пытаясь разобрать список билетов. Я пытаюсь использовать regex как можно больше, чтобы заставить себя изучить синтаксис, и я мог бы поклясться, что это должно сработать, но, увы, это не так, и поэтому я приезжаю сюда, ища вашу коллективную мудрость.Регулярное выражение для извлечения текста текста между совпадениями

<tr> 
    ... 
    ... 
    ... 
    ... 
</tr> 

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

/<tr>(.+)<\/tr>/ 

Это, кажется, самый маленький путь к достижению своей цели, но я получаю ошибки от preg_match. Я понимаю, что я мог флаг и цикл его, как и в этом очень и очень грубый псевдокоде

if /<tr>/ then { 
    while != /<\/tr>/ { 
     store line 
    } 
} 

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

+0

Вы имеете в виду "/ (. +) <\/tr> /"? –

+0

В чем вопрос? – Sjoerd

+0

lol извините. Это не работает. Мне было интересно, как вы, ребята, будете заниматься тем, что я пытаюсь сделать. Мне сложно понять, что не так с моим регулярным выражением. – Melignus

ответ

1

Использование Simple HTML DOM.

Регулятор Regex, обрабатывающий html, является беспорядком.

+0

Короче да. Извините, на это потребовалось так много времени, чтобы выбрать ответ, но я понял, в чем проблема. Я пытался разбирать блоки текста, которые были далеко друг от друга для регулярного выражения. Я исправил это, бросив некоторые для следующих циклов, чтобы отслеживать, насколько глубоко в те или иные теги я был. Отличная новость заключается в том, что приложение работает, и теперь я получаю текстовое сообщение в будние дни, если на сайте есть записи календаря, даже разбирает несколько записей за один день, очень гордясь собой и был легче, чем я изначально думал. – Melignus

2
  • Возможно, вам понадобится s (PCRE_DOTALL) modifier, чтобы соответствовать нескольким линиям.
  • Возможно, вы хотите, чтобы .*? вместо .*, или модификатор U (PCRE_UNGREEDY), чтобы соответствовать не жадным.
Смежные вопросы