我有一个超过 100 MB 的大型 XML 文件。我正在像这样读取文件
$fp = fopen('large.xml', 'r');
而 ($data = fread($fp, 4096)) {
XML的格式是这样的
<PersonalInfo>
<UserDetail>
<FirstName>ABC</FirstName>
<Occupation>Student</Occupation>
<DateOfBirth>08/14/1999</DateOfBirth>
</UserDetail>
<CaseDetail>....</CaseDetail>
<TransactionDetail>....</TransactionDetail>
</PersonalInfo>
<PersonalInfo>
<UserDetail>
<FirstName>XYZ</FirstName>
<Occupation>Student</Occupation>
<DateOfBirth>04/25/1991</DateOfBirth>
</UserDetail>
<CaseDetail>....</CaseDetail>
<TransactionDetail>.....</TransactionDetail>
</PersonalInfo>
<PersonalInfo>
<UserDetail>
<FirstName>DEF</FirstName>
<Occupation>Teacher</Occupation>
<DateOfBirth>05/12/1984</DateOfBirth>
</UserDetail>
<CaseDetail>....</CaseDetail>
<TransactionDetail>...</TransactionDetail>
</PersonalInfo>
我只想包含职业标签为“学生”的那些记录,并将这些结果写入 CSV 文件。
我已经尝试将 preg_match 作为 preg_match( "/\(.*?)\</PersonalInfo>/s", $data, $match ); 选择标签,然后查看 $match 但它返回双值(重复)。