/<table[\s]+cellspacing="0"[\s]+class="cj(?:.*?)"[\s]+id="(?:.*?)">(?:.*?)value="(.*?)"(?:.*?)<td[\s]+class="dep">(.*?)<\/td>(?:.*)(?:<td[\s]+class="arr">(.*?)<\/td>)+(?:.*?)<\/table>/
Это моя текущая строка регулярных выражений, используемая в PHP с preg_match_all()
. Я заменил (?:.*?)
на (?:.*)
, так что вместо получения первого <td>
с class="dep"
он получает последний. Теперь это работает отлично, если нет более одной таблицы, и в этом случае она получает последний <td>
с class="dep"
из всей разобранной строки. Может ли кто-нибудь помочь мне понять, что я сделал неправильно?Как я могу получить строку между некоторыми тегами, но ПЕРЕД "</table>", с регулярным выражением?
Кроме того, я знаю, что я должен был использовать XML синтаксический, но это казалось слишком сложным для меня: P
Edit: Кроме того, что я на самом деле хочу это <td>
что перед первым </table>
тега.
Вы действительно должны использовать синтаксический анализ xml для этого. Строковые операции с регулярным выражением должны быть последним решением, о котором вы думаете. И XML-анализ с php не настолько сложный. – Corubba
Я знаю, но я потратил неделю, пытаясь заставить его работать с XML, в то время как это регулярное выражение заняло у меня всего 2 дня (без предыдущего опыта). – Bogdacutu
Можете ли вы привести пример xml? – Corubba