从sql查询中选择特定文本

时间:2014-06-18 08:23:35

标签: php mysql xml

我需要一些帮助。这是我的代码(它故意缺少数据库连接,但它正在运行)

$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日星期一”

我该怎么做?

3 个答案:

答案 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();