2009-08-17 271 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