我正在学习正则表达式和网站爬行,并有以下问题,如果回答,应大大加快我的学习过程。
我已经从一个网站以htmlencoded格式获取表单元素。也就是说,我有一个$content字符串,所有标记都完好无损,如下所示:

$content = "<form name="sth" action="">
<select name="city">
<option value="one">One town</option>
<option value="two">Another town</option>
<option value="three">Yet Another town</option>
...
</select>
</form>

我想以这种方式获取网站上的所有选项:
array("One Town" => "one", "Another Town" => "two", "Yet Another Town" => "three" ...);

现在,我知道这可以很容易地通过操作字符串,将它切成小块,在每个字符串中搜索子字符串,等等,直到我得到我需要的一切。但是我确信一定有一种更简单的方法来处理regex,它应该立即从给定的字符串中获取所有结果有人能帮我找个捷径吗?我已经搜索了网上最好的regex网站,但没有结果。
非常感谢

最佳答案

Best methods to parse HTML。在下面找到DOM解决方案:

$dom = new DOMDocument;
$dom->loadHTMLFile('http://example.com');
$options = array();
foreach($dom->getElementsByTagName('option') as $option) {
    $options[$option->nodeValue] = $option->getAttribute('value');
}

这也can be done with Regex但是当PHP有很多本机和第三方解析器可用时,我发现用Regex编写一个可靠的HTML解析器并不实用。

关于php - 使用PHP和RegEx从网站的源代码中获取所有选项值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4254419/

10-11 03:48
查看更多