php - 使用 PHP 和 RegEx 从站点的源代码中获取所有选项值

标签 php mysql regex web-crawler

我正在学习 RegEx 和网站抓取,并且有以下问题,如果得到回答,应该会显着加快我的学习过程。

我已经从一个网站获取了 html 编码格式的表单元素。也就是说,我有完整的所有标签的 $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" ...);

现在,我知道这可以通过操作字符串轻松完成,将其切片并切 block ,在每个字符串中搜索子字符串,等等,直到我拥有我需要的一切。但我确信必须有一种更简单的方法来使用正则表达式,它应该立即从给定的字符串中获取所有结果。任何人都可以帮我找到捷径吗?我搜索了网络上最好的正则表达式网站,但没有结果。

非常感谢

最佳答案

参见 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 的 native 和第 3 方解析器时,使用 Regex 编写可靠的 HTML 解析器并不实用。

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

相关文章:

php - 即使辅助表不适用,也会在一个查询中从多个表返回数据

c# - 简单的正则表达式问题

java - 正则表达式在 Java 类的单行/多行中查找注释

php - Extjs & 资源管理器和文件上传

php - PHP 中的 MySQL 访问被拒绝,CLI 将连接

php - 从上传的文件执行代码

java - 无法创建 PoolableConnectionFactory

java - 掩码 - 带星号的地址(星号) - 如果数组长度为 1?

php - 在选项卡中回显不同字段

mysql查询中的php循环