Php Regex将数据提取到数组中
希望有人能帮助我,因为我不知道正则表达式。Php Regex将数据提取到数组中,php,regex,Php,Regex,希望有人能帮助我,因为我不知道正则表达式。 我需要将经典html页面中包含的数据提取到PHP数组中。 HTML代码如下所示: <html> ...some html code... <div data-companycounter="9879" data-code="A" data-seatcounter="9783" class=""> ...some html code... <di
我需要将经典html页面中包含的数据提取到PHP数组中。
HTML代码如下所示:
<html>
...some html code...
<div data-companycounter="9879" data-code="A" data-seatcounter="9783" class="">
...some html code...
<div data-companycounter="9879" data-code="B" data-seatcounter="9784" class="">
...some html code...
<div data-companycounter="11397" data-code="A" data-seatcounter="11509" class="">
...some html code...
</html>
希望它足够清晰。感谢那些能帮助我的人函数自定义解析html($html)
function custom_parse_html($html)
{
$company_counter = [];
preg_match_all('/<div data-companycounter="(.*)" data-code="(.*)" data-seatcounter="(.*)" (.*)>/im', $html, $matches);
foreach ($matches[0] as $key => $arr) {
// $matches[1][$key] => data-companycounter
// $matches[2][$key] => data-code
// $matches[3][$key] => data-seatcounter
if (!empty($company_counter[$matches[1][$key]])) {
$company_counter[$matches[2][$key]] = $matches[3][$key];
} else {
$company_counter[$matches[1][$key]] = [$matches[2][$key] => $matches[3][$key]];
}
}
return $company_counter;
}
{
$company_counter=[];
preg_match_all('//im',$html,$matches);
foreach($将[0]匹配为$key=>$arr){
//$matches[1][$key]=>数据公司计数器
//$matches[2][$key]=>数据代码
//$matches[3][$key]=>数据座位计数器
如果(!空($company_counter[$matches[1][$key]])){
$company_计数器[$matches[2][$key]]=$matches[3][$key];
}否则{
$company_计数器[$matches[1][$key]]=[$matches[2][$key]=>$matches[3][$key]];
}
}
返回$company_计数器;
}
正如评论中所说的,使用regex代替regex可以很容易地从HTML中提取数据。
因此,只需从DOMDocument
类初始化一个对象$doc
。
使用方法getElementsByTagName
获取所有div,然后迭代它们并获取所需的公司信息属性,按特定顺序将它们设置为$companycounter
数组
$html=
'
';
$doc=newDOMDocument();
$doc->loadHTML($html);
$divs=$doc->getElementsByTagName('div');
$companycounter=[];
foreach($div作为$div){
$counter=$div->attributes->item(0)->value;//数据公司计数器
$code=$div->attributes->item(1)->value;//数据代码
$seatcounter=$div->attributes->item(2)->value;//数据seatcounter
$companycounter[$code]=$seatcounter;
}
echo“您可能希望使用实际的HTML解析器来完成此工作。是的,如果您使用DOMDocument
类,提取数据将很容易。请检查我的答案!
function custom_parse_html($html)
{
$company_counter = [];
preg_match_all('/<div data-companycounter="(.*)" data-code="(.*)" data-seatcounter="(.*)" (.*)>/im', $html, $matches);
foreach ($matches[0] as $key => $arr) {
// $matches[1][$key] => data-companycounter
// $matches[2][$key] => data-code
// $matches[3][$key] => data-seatcounter
if (!empty($company_counter[$matches[1][$key]])) {
$company_counter[$matches[2][$key]] = $matches[3][$key];
} else {
$company_counter[$matches[1][$key]] = [$matches[2][$key] => $matches[3][$key]];
}
}
return $company_counter;
}
/*
Array
(
[9879] => Array
(
[A] => 9783
[B] => 9784
)
[11397] => Array
(
[A] => 11509
)
)