Я пытаюсь сопоставить шаблон, чтобы получить строку с веб-сайта. Вот строка в вопросе:

<a title="Posts by ivek dhwWaVa"
href="http://www.example.com/author/ivek/"
rel="nofollow">ivek</a>

Я пытаюсь сопоставить строку «ivek» между тегом a, и я хочу сделать это для каждого сообщения и связать это с количеством комментариев.

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

$content = file_get_contents('http://www.example.com');
preg_match_all("", $content, $matches);

И как я бы связал комментарии с именами авторов, ведь на сайте есть много других авторов, а также их собственный набор комментариев. Могу ли я использовать div, чтобы разбить это? Поскольку каждый набор информации обернут вокруг этого div:

<div id="post-54" class="excerpt">

Спасибо всем за любую помощь!

2
Abs 2 Янв 2010 в 01:20
1
И снова: regex + html ... Я чувствую, что приближается большой Schloooop.
 – 
Hamish Grubijan
2 Янв 2010 в 01:23
Обычно для работы с HTML-файлами лучше использовать XML-синтаксический анализатор (например, расширение DOM) , чем регулярные выражения.
 – 
Atli
2 Янв 2010 в 01:25
'regex' + 'html' = красные флаги, кричащие сирены, умоляющие отладчики ...
 – 
Carson Myers
2 Янв 2010 в 01:26

2 ответа

Лучший ответ

Позвольте мне первым познакомить вас с самый известный ответ о переполнении стека.

Регулярные выражения не подходят для синтаксического анализа HTML. Вам действительно нужен синтаксический анализатор HTML, даже для того, что может показаться простой задачей.

Я рекомендую что-то вроде PHP Simple HTML DOM Parser.

5
Community 23 Май 2017 в 14:48
1
Грр, я пытался найти этот пример: P
 – 
brianreavis
2 Янв 2010 в 01:25
Ха-ха, я всегда просто гуглил "coding horror cthulu" и получаю ссылку из сообщения Джеффа.
 – 
zombat
2 Янв 2010 в 01:26
Черт побери! Большое вам спасибо за это. Вероятно, сначала следует поискать regex + html! :)
 – 
Abs
2 Янв 2010 в 01:29

Вам действительно не следует искать Regex для выполнения этой работы:

3
Community 23 Май 2017 в 15:22
Хорошо (а может быть, плохо) видеть, что за время моего отсутствия ничего не изменилось, и эти вопросы по-прежнему очень полезны.
 – 
Chas. Owens
2 Янв 2010 в 09:21