php、regex、xml
我有一些。。。xml文档如下所示:php、regex、xml,php,xml,regex,Php,Xml,Regex,我有一些。。。xml文档如下所示: <file src="136090000-136100000"> <member id="136090000"> <Name> <![CDATA[DOSEKUN DANIEL ADETUNJI]]> </Name> <Email> <![CDATA[dosekun2
<file src="136090000-136100000">
<member id="136090000">
<Name>
<![CDATA[DOSEKUN DANIEL ADETUNJI]]>
</Name>
<Email>
<![CDATA[dosekun2d200@yahoo.com]]>
</Email>
<DateRegistration>
<![CDATA[10/19/2010 8:46:57 PM]]>
</DateRegistration>
</Member>
<usafisMember id="136090001">
<Name>
<![CDATA[yoleida colina]]>
</Name>
<Email>
<![CDATA[yole_g1972@hotmail.com]]>
</Email>
<DateRegistration>
<![CDATA[10/19/2010 8:47:08 PM]]>
</DateRegistration>
</usafisMember>
<usafisMember id="136090002">
<Name>
<![CDATA[Homero Valdovinos]]>
</Name>
<Email>
<![CDATA[felicida2d_9091@hotmail.com]]>
</Email>
<DateRegistration>
<![CDATA[10/19/2010 8:47:01 PM]]>
</DateRegistration>
</Member>
我需要提取成员id、姓名、电子邮件和日期注册,但正如您所看到的,xml的格式不是很好。我尝试使用简单的xml,它显然不起作用,但下面的正则表达式似乎不起作用。以下是我尝试的模式:
$pattern = "/<Name><\\!\\[CDATA\\[(.*)\\]\\]><\/Name>/";
preg_match_all($pattern, $xml_content, $matches);
$name = $matches[1][0][v];
echo " name is $name ";
$pattern=“/”;
preg_match_all($pattern,$xml_content,$matches);
$name=$matches[1][0][v];
echo“name是$name”;
使用正则表达式解析XML是非常困难的。使用专用的XML解析器。php有很多可用的工具。使用正则表达式解析XML是非常有用的。使用专用的XML解析器。php有很多可用的工具。$x=
$x='<file src="136090000-136100000">
<usafisMember id="136090000">
<Name>
<![CDATA[DOSEKUN DANIEL ADETUNJI]]>
</Name>
<Email>
<![CDATA[dosekun2d200@yahoo.com]]>
</Email>
<DateRegistration>
<![CDATA[10/19/2010 8:46:57 PM]]>
</DateRegistration>
</usafisMember>
<usafisMember id="136090001">
<Name>
<![CDATA[yoleida colina]]>
</Name>
<Email>
<![CDATA[yole_g1972@hotmail.com]]>
</Email>
<DateRegistration>
<![CDATA[10/19/2010 8:47:08 PM]]>
</DateRegistration>
</usafisMember>
<usafisMember id="136090002">
<Name>
<![CDATA[Homero Valdovinos]]>
</Name>
<Email>
<![CDATA[felicida2d_9091@hotmail.com]]>
</Email>
<DateRegistration>
<![CDATA[10/19/2010 8:47:01 PM]]>
</DateRegistration>
</usafisMember>
</file>
';
$xml = new SimpleXMLElement($x);
foreach ($xml->usafisMember as $usafisMember){
echo 'Name: '. $usafisMember->Name.'<br>';
}
';
$xml=新的simplexmlement($x);
foreach($xml->usafisMember作为$usafisMember){
回显“名称:”。$USAFISEMBER->Name。“
”;
}
不得不添加关闭文件,但其他方面按预期工作
';
$xml=新的simplexmlement($x);
foreach($xml->usafisMember作为$usafisMember){
回显“名称:”。$USAFISEMBER->Name。“”; }
必须添加关闭文件,但other wise按预期工作使用XML解析器,如SimpleXML。很抱歉,这很明显,但为什么不使用?XML是否总是缺少关闭文件标记,或者是否存在任何其他无效的构造?我尝试过“$XML\u content=file\u get\u contents(“/var/www/html/XML/$file\u name”);///print\r($XML\u content)$xml=simplexml\u load\u file(“$xml\u content”);echo$xml->getName()。“
”;“下面是日志文件,使用xml解析器,如simplexml。很抱歉,很明显,但是为什么不使用呢?xml是否总是缺少结束文件标记,或者可能存在任何其他无效的构造?我尝试过“$xml\u content=file\u get\u contents(”/var/www/html/xml/$file_name”);//print_r($xml_content);$xml=simplexml_load_file($xml_content”);echo$xml->getName()。“
”;”下面是日志文件xml不能格式正确或格式不正确;它只能是有效的。如果它不是有效的XML,那么您应该找到XML,否则您将永远无法可靠地做到这一点。(在我看来,您的XML看起来不错,除了缺少结束标记。)XML的格式不能很好,也不能很好地格式化;它只能是有效的。如果它不是有效的XML,那么您应该找到有效的XML,否则您将永远无法可靠地做到这一点。(在我看来,您的XML看起来不错,除了缺少结束标记。)