我想从数组中获取XML标记之间的所有单词,当前结果是:
注意:第84行........中的数组到字符串转换
结果是:数组
if(isset($_POST['send']))
{
echo "sync is started <br>";
$handle = fopen("XML/$file_name", "r");
if ($handle)
{
while (($line = fgets($handle)) !== false)
{
$keywords=array("series_title","series_type","series_episodes");
for ($i=0; $i < 3; $i++)
{
$pattern = "/<$keywords[$i]>(.*?)<\/keywords[$i]>/";
preg_match($pattern, $line, $matches);
echo "result is: " . $matches . "<br>";
}
}
}
else
{
$upload_text = "error";
}
$upload_text ="finished";
fclose($handle);
//unlink('XML/' . $file_name);
}
答案 0 :(得分:0)
好吧,正如您可以在Official PHP Documentation中读到的那样,可选的preg_match
第三个参数将是一个数组
匹配
如果提供了匹配,那么它将填充搜索结果。 $ matches [0]将包含与完整模式匹配的文本, $ matches 1将包含与第一个捕获的匹配的文本 带括号的子模式,依此类推。
所以只需改变你的:
echo "result is: " . $matches . "<br>";
到:
echo "result is: " . $matches[1] . "<br>";
希望有所帮助
答案 1 :(得分:0)
preg_match函数的$ matches参数中返回的值是一个数组,其第一个元素是整个匹配,以下元素是捕获组(括号之间的部分)。
所以,在你的代码中,你只对$ matches [1]感兴趣:
echo "result is: $matches[1]<br>";
答案 2 :(得分:0)
您应该使用SimpleXML来读取XML。这是一个例子:
<?php
$string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<myanimelist>
<anime>
<series_animedb_id>1143</series_animedb_id>
<series_title><![CDATA[.hack//Intermezzo]]></series_title>
<series_type>Special</series_type>
<series_episodes>1</series_episodes>
</anime>
<anime>
<series_animedb_id>299</series_animedb_id>
<series_title><![CDATA[.hack//Liminality]]></series_title>
<series_type>OVA</series_type>
<series_episodes>4</series_episodes>
</anime>
</myanimelist>
XML;
$result = simplexml_load_string($string);
foreach ($result->anime as $anime)
{
echo trim($anime->series_title), "\n";
echo $anime->series_type, "\n";
echo $anime->series_episodes, "\n";
echo "==========================\n\n";
}
在您的情况下,您将使用simplexml_load_file
,因此您的代码将如下所示:
<?php
$result = simplexml_load_file('your_file_path_here.xml');
foreach ($result->anime as $anime)
{
echo trim($anime->series_title), "\n";
echo $anime->series_type, "\n";
echo $anime->series_episodes, "\n";
}