Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用PHP从xml文件中获取所有行的列表_Php_Xml_Parsing_Preg Match All - Fatal编程技术网

如何用PHP从xml文件中获取所有行的列表

如何用PHP从xml文件中获取所有行的列表,php,xml,parsing,preg-match-all,Php,Xml,Parsing,Preg Match All,我有一个xml文件,我想解析这个xml文件中的作者列表 <AuthorList CompleteYN="Y"> <Author ValidYN="Y"> <LastName>Goyette-Desjardins</LastName> <ForeName>Guillaume</ForeName>

我有一个xml文件,我想解析这个xml文件中的作者列表

            <AuthorList CompleteYN="Y">
            <Author ValidYN="Y">
                <LastName>Goyette-Desjardins</LastName>
                <ForeName>Guillaume</ForeName>
                <Initials>G</Initials>
                <AffiliationInfo>
                    <Affiliation>University 1.</Affiliation>
                </AffiliationInfo>
            </Author>
            <Author ValidYN="Y">
                <LastName>Auger</LastName>
                <ForeName>Jean-Philippe</ForeName>
                <Initials>JP</Initials>
                <AffiliationInfo>
                    <Affiliation>University 2</Affiliation>
                </AffiliationInfo>
            </Author>
            <Author ValidYN="Y">
                <LastName>Xu</LastName>
                <ForeName>Jianguo</ForeName>
                <Initials>J</Initials>
                <AffiliationInfo>
                    <Affiliation>University 3</Affiliation>
                </AffiliationInfo>
            </Author>
        </AuthorList>
怎么
获取完整的作者列表(Goyette Desjardins G;Auger JP;Xu J)。非常感谢

您不应该使用正则表达式来解析XML,而应该使用类似的方法


不,要解析xml文件,不必使用正则表达式或任何直接字符串方法。使用XMLReader或DOMDocument。文件已经结构化,请使用该结构。请注意,您可以使用
simplexml\u load\u file
功能,而不是
file\u get\u contents
。谢谢@Lawrence,但我想将列表从
foreach
中取出,我能做什么?谢谢你是说你想要一组
$authors
?@NguyenHoangBach;将每个项目存储到一个数组中。有什么问题吗?谢谢大家,代码比治疗病人要复杂得多。(^^)
$api_xml_url = "https://example.com&pid=3123133213&retmode=xml";                            
$xml = file_get_contents($api_xml_url); 
        preg_match_all("'<LastName>(.*?)</LastName>'si", $xml, $match);
        foreach($match[1] as $LastName) {
        $LastName = strip_tags($LastName);
        }
        preg_match_all("'<Initials>(.*?)</Initials>'si", $xml, $match);
        foreach($match[1] as $Initials) {
        $Initials = strip_tags($Initials);
        }
        $authors = $LastName.$Initials;     
<?php
$api_xml_url = "https://example.com&pid=3123133213&retmode=xml";                            
$string = file_get_contents($api_xml_url);

$xml = simplexml_load_string($string);

foreach ($xml as $item) {
    echo $item->ForeName.' '.$item->LastName.' ('.$item->Initials.')'.PHP_EOL;
}
Guillaume Goyette-Desjardins (G)
Jean-Philippe Auger (JP)
Jianguo Xu (J)