我有一个问题,我有一个脚本应该搜索XML文件以匹配字符串。 这是我的剧本:
<?php
$file = "klein.xml";
$lines = file($file);
foreach ($lines as $line_num => $line)
{
echo htmlentities($line);
echo "<br>";
}
if (preg_match("/message/", htmlentities($line), $found))
{
echo "Found!";
echo $found[0];
echo "test";
}
else
{
echo "Not Found!";
}
?>
这是我正在使用的xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<product-data>
<message-header>
<message-id>OR-1361163557-gr</message-id>
<message-timestamp>1361163557</message-timestamp>
<export-version current_version="1">OGPDX-2.01.01</export-version>
</message-header>
</product-data>
问题是当我preg匹配'product'时它正常工作但是当我尝试preg匹配另一个字符串,即'message'时它不起作用?
我很好奇这个解决方案,提前谢谢!
答案 0 :(得分:0)
您能否查看此代码,我注意到您将if
循环放在foreach
之外;因此只执行最后一行。
<?php
$file = "klein.xml";
$lines = file($file);
foreach ($lines as $line_num => $line)
{
if (preg_match("/message/", htmlentities($line), $found))
{
echo "Found ".$found[0]."<br />";
}
}
?>
答案 1 :(得分:0)
问题在于您的逻辑:您只检查包含$line
</product-data>
的最后一个值
答案 2 :(得分:0)
所以你在搜索什么? xml的一行...
当你搜索“产品”(在最后一行)时,$ line在最后一行。
foreach ($lines as $line_num => $line)
{
if (preg_match("/message/", $line , $found))
{
echo "Line: $line_num - ".$found[0]." <br>";
}
}