我需要一些帮助。这是我的代码(它故意缺少数据库连接,但它正在运行)
$sql = "SELECT * FROM wp_posts
INNER JOIN wp_postmeta ON wp_posts.ID=wp_postmeta.post_id
WHERE wp_posts.post_type='ait-job-offer'
AND wp_posts.post_status = 'publish'
AND wp_postmeta.meta_key='_ait-job-offer_offer-data'";
$res = mysql_query($sql);
$xml = new XMLWriter();
$xml->openURI("php://output");
$xml->startDocument('1.0' , 'iso-8859-1' );
$xml->setIndent(true);
$xml->startElement('xml');
while ($row = mysql_fetch_assoc($res)) {
$xml->startElement('job');
$xml->startElement("jobs");
$xml->writeRaw(utf8_encode($row['post_name']));
$xml->endElement();
$xml->startElement("id");
$xml->writeRaw(utf8_encode($row['ID']));
$xml->endElement();
$xml->startElement("link");
$xml->writeRaw(utf8_encode($row['guid']));
$xml->endElement();
$xml->startElement("name");
$xml->writeRaw(utf8_encode($row['post_title']));
$xml->endElement();
$xml->startElement("region");
$xml->writeRaw('Portugal');
$xml->endElement();
$xml->startElement("salary");
$xml->writeRaw(' ');
$xml->endElement();
$xml->startElement("company");
$xml->writeRaw('M21Rh - Empresa de Trabalho Temporário, Lda');
$xml->endElement();
$xml->startElement("company_url");
$xml->writeRaw(utf8_encode('http://www.m21rh.pt/empresa/quem-somos/'));
$xml->endElement();
$xml->startElement("description");
$xml->writeRaw(utf8_encode(strip_tags($row['post_content'],'')));
$xml->endElement();
$xml->startElement("expire");
$xml->writeRaw(utf8_encode($row['meta_value']));
$xml->endElement();
$xml->startElement("updated");
$xml->writeRaw(utf8_encode($row['post_date']));
$xml->endElement();
$xml->endElement();
}
$xml->endElement();
header('Content-type: text/xml');
$xml->flush();
?>
这是此代码提供的结果
<job>
<jobs>consultoresformadores-para-zona-de-lisboa</jobs>
<id>2320</id>
<link>http://www.m21rh.com/?post_type=ait-job-offer&p=2320</link>
<name>Colaborador Front Office para a zona de Sines </name>
<region>Portugal</region>
<salary> </salary>
<company>M21Rh - Empresa de Trabalho Temporário, Lda</company>
<company_url>http://www.m21rh.pt/empresa/quem-somos/</company_url>
<description>A M21Rh - Empresa de Trabalho Temporário, Lda., recruta para empresa sua Cliente , Colaborador Front Office para a zona de Sines.
Perfil:
- Responsável;
- Pontual;
- Dinâmico.
Requisitos:
- Boa Apresentação;
-12º Ano (Mínimo Obrigatório);
-Experiência em Windows Office (Obrigatório);
- Carta de Condução e Transporte Próprio;
- Residente na zona de Sines;
- Fácil dicção;
- Disponibilidade de Horários e de deslocações para Espanha;
- Experiência na área Comercial;
- Experiência em Recursos Humanos;
- Experiência em Recrutamento e Seleção;
- Domínio de Espanhol e Inglês;
Oferecemos: Vencimento base compatível com a função.
Responder a esta oferta
[si-contact-form form='4']</description>
<expire>a:6:{s:6:"skills";s:0:"";s:9:"validFrom";s:16:"Thu, 22 May 2014";s:7:"validTo";s:16:"Mon, 30 Jun 2014";s:11:"contactName";s:0:"";s:11:"contactMail";s:0:"";s:12:"contactPhone";s:9:"265238165";}</expire>
<updated>2014-03-12 17:06:37</updated>
</job>
我需要一些帮助。 在expire标签中,我只需要那里的一小部分信息。
我总是得到像
这样的结果a:6:{s:6:"skills";s:0:"";s:9:"validFrom";s:16:"Thu, 22 May 2014";s:7:"validTo";s:16:"Mon, 30 Jun 2014";s:11:"contactName";s:0:"";s:11:"contactMail";s:0:"";s:12:"contactPhone";s:9:"265238165";}
但我只需要在validTo
之后使用日期“validTo”; s:16:“2014年6月30日星期一”
我该怎么做?
答案 0 :(得分:0)
该格式是序列化的()尝试unserialized()您的文本。
答案 1 :(得分:0)
我认为您的数据是序列化的形式..因此,首先要对数据进行反序列化,然后才能使用。
使用serialize()和unserialize()函数
喜欢
$str = serialize($array);
$arr = unserialize($strenc)
在过期时使用此...
$strval = unserialize(utf8_encode($row['meta_value']) );
$xml->writeRaw($strval[validTo]);
答案 2 :(得分:0)
列中保存的名为“meta_value&#39;已使用serialize()
函数创建。这需要一个数组并将其转换为一个字符串,以便它可以在一个列中保存到数据库中,然后可以使用unserialize()
对其进行反序列化,将其转换回PHP数组。
因此,您需要将其重新转换为数组,然后获取您感兴趣的数据。
所以试试这个。
$ar = unserialize($row['meta_value']);
$validTo = $ar['validTo'];
$xml->startElement("expire");
$xml->writeRaw(utf8_encode($validTo));
$xml->endElement();