我想从html中提取一些汽车制造数据。这是我要获取的HTML数据。
我尝试了此代码,但无法正常工作
$data = "<select id="c1:swfield" name="c1">
<option value="--">> All Makes</option>
<option value="1167">Acura</option>
<option value="1173">Alfa Romeo</option>
<option value="1564">Smart</option>
<option value="1836">Speranza</option>
<option value="1566">Ssang Yong</option>
</select>";
preg_match_all('|<select id=\"c1:swfield\" name=\"c1\">(.*?)</select>|s', $data, $matches);
print_r($matches);
?>
我得到一些空数组作为输出。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从您的问题来看,您似乎想要从HTML文本中提取汽车制造商的名称列表。根据您提供的代码,正则表达式可能没有正确地匹配到您想要的数据。您可以尝试使用以下更精确的正则表达式来匹配每个汽车制造商的名称:
$data = "
> All Makes
Acura
Alfa Romeo
Smart
Speranza
Ssang Yong
";
// 使用正则表达式匹配每个汽车制造商的名称
preg_match_all('/(?<=\n)[A-Za-z\s]+/m', $data, $matches);
print_r($matches[0]);
这里的正则表达式 /(?<=\n)[A-Za-z\s]+/m
的解释如下: - (?<=\n)
是一个正向查找断言,确保匹配的内容之前是一个换行符(\n
),这有助于在每行开始处找到制造商名称。 - [A-Za-z\s]+
匹配任何字母(大写或小写)或空白字符(如空格),+
表示匹配一个或多个这样的字符。
请注意,这个解决方案假设每个制造商名称都是独占一行的,并且在每行的开始。如果您的实际HTML结构有所不同,请相应调整正则表达式。此外,处理HTML数据时,更推荐使用DOM解析器,如PHP的DOMDocument类或Simple HTML DOM Parser库,因为正则表达式可能难以处理复杂的HTML结构。