PHP:获取所有<options>标签的值到一个数组
PHP: Get Values of all <options> Tag to an array
首先:抱歉,我只是在学习编码,所以这可能是一个简单的问题:)。
我要存档的是获取所有
的值
<option value="123"></option>
<option value="412"></option>
在一个html文档中放入一个数组。因此,对于上面的示例,只有“123”、“412”等。如果数组只是数字,则将对其进行检查。
这是我得到的:
$html = file_get_contents(url);
preg_match_all('/value="(\w+)"/', $html, $result);
var_dump($result);
$digits = array_filter($result, 'ctype_digit');
我从中得到的是什么,因为 $result 给我的结果如下:
value="123"
我知道我搞砸了那些正则表达式,但我无法正确理解。
然后我不确定使用 XPath 来 select 是否更好,但我也没有得到 :(.
非常感谢任何帮助! :)
多亏了CD001和如月的追捕,我成功了。使用 DOMDocument 非常简单...有时人们会觉得太复杂...
$html = file_get_contents('url');
$dom = new DOMDocument;
$dom->loadHTML($html);
$options = $dom->getElementsByTagName('option');
$digits = array();
foreach ($options as $option) {
$valueID = $option->getAttribute('value');
array_push($digits, $valueID);
}
var_dump($digits);
我的建议是不要使用正则表达式,而是使用 domparser。
对于您提供的数据,$result
是一个包含 2 个数组的 array
。您的值在第二个数组 $result[1]
中
您可以将代码更新为:
preg_match_all('/value="(\w+)/', $html, $result);
$digits = array_filter($result[1], 'ctype_digit');
var_dump($digits);
那会给你:
array(2) {
[0]=>
string(3) "123"
[1]=>
string(3) "412"
}
另一种正则表达式:
value="\K\d+(?=")
匹配一位或多位数字 d+
首先:抱歉,我只是在学习编码,所以这可能是一个简单的问题:)。
我要存档的是获取所有
的值<option value="123"></option>
<option value="412"></option>
在一个html文档中放入一个数组。因此,对于上面的示例,只有“123”、“412”等。如果数组只是数字,则将对其进行检查。
这是我得到的:
$html = file_get_contents(url);
preg_match_all('/value="(\w+)"/', $html, $result);
var_dump($result);
$digits = array_filter($result, 'ctype_digit');
我从中得到的是什么,因为 $result 给我的结果如下:
value="123"
我知道我搞砸了那些正则表达式,但我无法正确理解。
然后我不确定使用 XPath 来 select 是否更好,但我也没有得到 :(.
非常感谢任何帮助! :)
多亏了CD001和如月的追捕,我成功了。使用 DOMDocument 非常简单...有时人们会觉得太复杂...
$html = file_get_contents('url');
$dom = new DOMDocument;
$dom->loadHTML($html);
$options = $dom->getElementsByTagName('option');
$digits = array();
foreach ($options as $option) {
$valueID = $option->getAttribute('value');
array_push($digits, $valueID);
}
var_dump($digits);
我的建议是不要使用正则表达式,而是使用 domparser。
对于您提供的数据,$result
是一个包含 2 个数组的 array
。您的值在第二个数组 $result[1]
您可以将代码更新为:
preg_match_all('/value="(\w+)/', $html, $result);
$digits = array_filter($result[1], 'ctype_digit');
var_dump($digits);
那会给你:
array(2) {
[0]=>
string(3) "123"
[1]=>
string(3) "412"
}
另一种正则表达式:
value="\K\d+(?=")
匹配一位或多位数字 d+