使用php从XML字段中剥离一些数据

时间:2014-04-25 12:56:10

标签: php xml wordpress parsing

我目前有一个XML文件正在使用WordPress上的插件导入。

我有一个当前正在自动导入数据和时间的字段,但该字段包含当前格式的数据

<EndDate>2014-04-24T00:00:00+01:00</EndDate>

我需要以某种方式删除时间字段,但我仍然坚持如何做到这一点(使用php)。

有没有办法创建一个删除时间的函数,以便该字段拉入;

<EndDate>YYYY-MM-DD</EndDate>

请帮忙。

3 个答案:

答案 0 :(得分:0)

首先需要准确找到该字段。您可以使用simplexml。 要输出格式化日期,请使用date功能。它接受UNIX时间戳。 您可以使用strtotime函数获取该时间戳,该函数将日期+时间格式化为字符串并返回UNIX时间戳。

答案 1 :(得分:0)

这是你可以做的事情的一种方式

$xml = "<reservation>
  <detail>
      <name>XXXXX</name>
            <EndDate>2014-04-24T00:00:00+01:00</EndDate>
  </detail>
  <detail>
      <name>YYYYY</name>
            <EndDate>2014-04-24T00:00:00+01:00</EndDate>
  </detail>
</reservation>";

$data = simplexml_load_string($xml);
//rint_r($data);
foreach ($data->detail as $obj)
{
    $end_date = $obj->EndDate ;
    $date = new DateTime($end_date);
  $obj->EndDate = $date->format("Y-m-d");
}

$new_xml = $data->asXML();

echo $new_xml ;

您也可以另存为文件

 $data->asXML($file); 

我用于将字符串加载为

  $data = simplexml_load_string($xml); 

您也可以将文件加载为

  $data = simplexml_load_file($file);

答案 2 :(得分:0)

可以使用Xpath从XML DOM获取节点,但它也可以提取标量值。它甚至还有一些功能。其中一个是string-before(),它在子字符串之前返回字符串的一部分。

$xml = "<EndDate>2014-04-24T00:00:00+01:00</EndDate>";

$dom = new DOMDocument();
$dom->loadXml($xml);    
$xpath = new DOMXpath($dom);

var_dump(
  $xpath->evaluate('substring-before(//EndDate, "T")')
);

输出:https://eval.in/141939

string(10) "2014-04-24"