2009-08-17 283 views
0

我正在閱讀包含一個HTML頁面的一些細節,我正在尋找每一個字符串的出現,該字符串帶有一個標籤,我只想讀取該字符串。PHP的正則表達式匹配所有的HTML標籤

例子:

<a href="http://www.example.com/search?la=en&q=javascript">javascript</a> 
<a href="http://www.example.com/search?la=en&q=PHP">PHP</a> 

我只是想讀HREF標籤的基礎上必須包含這個(http://www.example.com/search?la=en&q=)標籤上的文字每次發生。

有什麼想法?

回答

4

SimpleHtmlDom例子(是不是很漂亮嗎?):

// Create DOM from URL or file 
$html = file_get_html('http://www.google.com/'); 

// Find all links 
foreach($html->find('a') as $element) { 
     echo $element->href . '<br>'; 
     echo $element->text; //this is what you want 
} 
0

如果您正在閱讀的HTML頁面非常定期(例如,機器生成根據預測的模式),像這樣的工作:

preg_match('|<a\s+href="http://www.example.com/search\?la=en&q=(\w+)"\s*>\1</a>|', $page) 

但是,如果它得到任何比這更復雜,正則表達式可能不會對工作不夠 - 你會更好使用完整的HTML解析器來提取的聯繫,並檢查他們一個一個一個找到你想要的文字。

+0

我相信你應該逃避網址中的點? http:// www \ .example \ .com / – 2009-08-17 11:32:13