网站开发岗位实际情况,市场调研公司如何赚钱,企业建网站的目的,鲜花店网站建设的总结使用正则表达式解析HTML可能不是最好的方法.您可以查看DOMDocument::loadHTML,这将允许您使用DOM方法处理HTML文档(例如,如果您知道这些,则使用XPath查询).您可能还想看一下Zend_Dom和Zend_Dom_Query,顺便说一句,如果您可以在应用程序中使用Zend Framework的某些部分,这是非常好…使用正则表达式解析HTML可能不是最好的方法.您可以查看DOMDocument::loadHTML,这将允许您使用DOM方法处理HTML文档(例如,如果您知道这些,则使用XPath查询).您可能还想看一下Zend_Dom和Zend_Dom_Query,顺便说一句,如果您可以在应用程序中使用Zend Framework的某些部分,这是非常好的.例如,在使用Zend_Test进行功能测试时,它们用于从HTML页面获取数据 – 并且工作得很好;-)首先看起来似乎更难……但是,考虑到一些HTML页面的混乱,它可能是一个更明智的想法……在评论和编辑OP之后编辑这里有几个想法,从“简单”开始,一个输入标签它可以跨越几条线传播它可以有很多属性只考虑名称和价值是您感兴趣的,您必须处理这两个可能处于任何可能的顺序的事实属性可以包含双引号,单引号,甚至不包含其值 tags / attributes可以是小写的也可以是大写的标签并不总是必须关闭好吧,其中一些点无效 – HTML;但仍然在大多数公共网络浏览器中工作,所以必须考虑到它们……只有这些点,我不想成为写正则表达式的人^^但我想可能还有其他一些我没想过的困难.另一方面,你有DOM和xpath …要获得输入名称“q”的值(例如this page),这是一个类似这样的问题$url http://www.google.fr/search?qtestieutf-8oeutf-8aqtrlscom.ubuntu:en-US:unofficialclientfirefox-a;$html file_get_contents($url);$dom new DOMDocument();if ($dom-loadHTML($html)) {// yep, not necessarily valid-html...$xpath new DOMXpath($dom);$nodeList $xpath-query(//input[nameq]);if ($nodeList-length 0) {for ($i0 ; $ilength ; $i) {$node $nodeList-item($i);var_dump($node-getAttribute(value));}}} else {// too bad...}重要的是什么 XPath查询,只有…并且它有什么静态/常量吗好吧,我说我想要所有 input具有等于“q”的name属性.它只是工作我得到这个结果string test (length4)string test (length4)(我查了一下页面上有两个输入名称“q”^^)我知道页面的结构吗绝对没有;-)我只知道我/你/我们想要名为q的输入标签;-)这就是我们得到的;-)编辑2选择和选项有点乐趣好吧,只是为了好玩,这是我为选择和选项提出的$url http://www.google.fr/language_tools?hlfr;$html file_get_contents($url);$dom new DOMDocument();if ($dom-loadHTML($html)) {// yep, not necessarily valid-html...$xpath new DOMXpath($dom);$nodeListSelects $xpath-query(//select);if ($nodeListSelects-length 0) {for ($i0 ; $ilength ; $i) {$nodeSelect $nodeListSelects-item($i);$name $nodeSelect-getAttribute(name);$nodeListOptions $xpath-query(option[selectedselected], $nodeSelect); // We want options that are inside the current selectif ($nodeListOptions-length 0) {for ($j0 ; $jlength ; $j) {$nodeOption $nodeListOptions-item($j);$value $nodeOption-getAttribute(value);var_dump(name$name value$value);}}}}} else {// too bad...}我得到一个输出string namesl valuefr (length23)string nametl valueen (length23)string namesl valueen (length23)string nametl valuefr (length23)string namesl valueen (length23)string nametl valuefr (length23)这是我的预期.一些解释好吧,首先,我获取页面的所有选择标记,并将其名称保存在内存中.然后,对于每一个,我得到选定的选项标签作为其后代(总是只有一个,顺便说一句).在这里,我有价值.比前面的例子复杂一点……但是仍然比正则表达式容易得多,我相信……花了我10分钟,而不是更多……我仍然没有勇气(疯狂)开始想想某种能够做到这一点的突变正则表达式:-D哦,作为旁注我仍然不知道HTML文档的结构是什么样的我甚至没有看过它的源代码^^我希望这会有所帮助……谁知道,也许我会说服你正则表达式在解析HTML时不是一个好主意……也许吧 还是玩得开心