PHP Regex匹配所有HTML标记

时间:2009-08-17 08:36:30

标签: php html regex

我正在阅读包含 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 标记的基础上阅读每一个标记TEXT,标记必须包含此标记(http://www.example.com/search?la=en&q=)。

有什么想法吗?

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

如果您正在阅读的HTML页面非常规则(例如,根据可预测的模式生成机器),那么这样的事情就可以了:

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

但如果它变得更复杂,正则表达式可能不足以完成这项工作 - 你最好使用完整的HTML解析器来提取链接并逐个检查它们以查找你想要的文字。