Я пытаюсь проиндексировать некоторый контент из серии .html, имеющих одинаковый формат.
Итак, я получаю много таких строк: <a href="meh">[18] blah blah blah < a...
И идея состоит в том, чтобы извлечь число (18) и текст рядом с ним (бла ...). Кроме того, я знаю, что каждая квалификационная строка начинается с ">
и заканчивается либо <a
, либо </p
. Проблема связана с необходимостью сохранения всех других тегов htmHTML как части текста (<i>
, <u>
и т. Д.).
Итак, у меня есть что-то вроде этого:
$docString = file_get_contents("http://whatever.com/some.htm");
$regex="/\">\ [(.*?)\ ] (<\/a>)(.) *?(<)/";
preg_match_all($regex,$docString,$match);
Давайте посмотрим на $regex
на секунду. Проигнорируйте это пробелы, я просто помещаю их здесь, потому что иначе некоторые символы исчезают. Я уточняю, что это начнется с ">
. Затем я делаю числа внутри вещи []
. Затем я выделяю </a>
. Пока все хорошо.
В конце я делаю (.)*?(<)
. Это поворотный момент. Оставляя последний бит, (<)
, как этот, текст будет прерван при обнаружении тега подчеркивания или курсива. Однако, если я поставлю (<a|</p)
, результирующий массив окажется пустым. Я попытался изменить это только на (<a)
, но кажется, что 2 символа испортили весь тинг.
Что я могу сделать? Я боролся с этим весь день.