2011-02-24 2 views
0

У меня есть строка, и я хочу извлечь часть, но я не знаком с Regex. Это строка:Help using PHP Regular Expression

<p>You have all kinds of great energy coming down today, and should be able to get almost anything started. It's one of those days when you need to be busy pretty much every waking minute! 
</p> 
     <p>More horoscopes! Check your: <a href="http://horoscopes.astrology.com/index/dailysinglesindex.html?dst=rss%7Cast_horo%7Cdo">Daily Single's Love</a>, <a href="http://horoscopes.astrology.com/index/dailyromindex.html?dst=rss%7Cast_horo%7Cdo">Daily Couple's Love</a>, <a href="http://horoscopes.astrology.com/index/dailytechindex.html?dst=rss%7Cast_horo%7Cdo">Daily Work</a>, <a href="http://horoscopes.astrology.com/index/weeklyromindex.html?dst=rss%7Cast_horo%7Cdo">Weekly Romantic</a>, <a href="http://horoscopes.astrology.com/index/monthlyfitindex.html?dst=rss%7Cast_horo%7Cdo">Monthly Fitness</a>, <a href="http://horoscopes.astrology.com/?dst=rss%7Cast_horo%7Cdo">more</a> ...</p> 
     <p>Today's Free Sample Reading: Transform your love life or relationship in the coming year with our <a href="http://shop.astrology.com/scripts/runisa.dll?AO:TPROD::RSSHORODO,offer=null&dst=rss%7Cast_horo%7Cdo_offer&prodID=7014">free sample Love in the New Year tarot reading</a> at Astrology.com.</p> 
     <p><a href="http://www.ivillage.com/redir?iv_url=http://www.keen.com/documents/special_offers/astrology-lp1.asp?TID=FMkPKWEY">Is it really over? Find out if he'll come back with a Free Psychic Love Reading. </a></p><img src="http://feeds.feedburner.com/~r/dailyoverview/~4/-RSJe5GW1h0" height="1" width="1"/> 

Я хочу, чтобы извлечь только первый абзац:

<p>You have all kinds of great energy coming down today, and should be able to get almost anything started. It's one of those days when you need to be busy pretty much every waking minute! 
</p> 

Спасибо заранее,

+0

Есть хорошая страница wiki - http://stackoverflow.com/questions/3650125/how-to-parse-html-with-php, объясняющая, почему вы не должны этого делать – Vika

+0

Возможный дубликат [обход страницы html с использованием php?] (http://stackoverflow.com/questions/3946506/crawling-a-html-page-using-php) – Gordon

+0

* (связанный) * [Лучшие методы анализа HTML] (http://stackoverflow.com/ вопросы/3577641/best-methods-to-parse-html/3577662 # 3577662) – Gordon

ответ

2
preg_match_all('/<p>.+?<\/p>/',$yourString, $result); 

$p1 = $result[0][0]; 

print $p1; 

Это будет работать только в том случае, если ваши P-метки являются < p>. </p> Как только вы начнете добавлять атрибуты, он сломается. Это одна из причин, почему вы не должны использовать регулярное выражение для извлечения HTML в первую очередь.

+0

. +? <\/p> не сломается, если p имеет атрибуты –

2

Ну, вы можете сделать это с помощью RegExp, но это не рекомендуется. Обратитесь к Parsing Html The Cthulhu Way

Я могу предвидеть, что вы можете извлечь некоторый HTML (или прочитать из файла) и хотите извлечь какой-либо текст из нашего. HTML предназначен для макета, а не для структурированного языка для хранения данных.