PHP从列表中获取元素

时间:2012-02-24 13:17:34

标签: php wordpress

我需要从列表中获取元素,通过$post->post_content

从post.php文件中的单个wordpress页面获取更新

它的输出是:

  

Sportpaleis Antwerpen 25/02/2012 Sioen De Zwerver leffinge 24/03/2012   Nathan The zydeco Cha-Chas n9 Eeklo 24/03/2012 Kraantje Pappie Nijdrop   Opwijk 24/03/2012 Eigen Makelij Hof Ter Loo安特卫普26/03/2012测试   testPura vida Sportpaleis Antwerpen 25/02/2012 Sioen De Zwerver   leffinge 24/03/2012 Nathan The zydeco Cha-Chas n9 Eeklo 24/03/2012   Kraantje Pappie Nijdrop Opwijk 24/03/2012 Eigen Makelij Hof Ter Loo   安特卫普26/03/2012

我需要找到一种方法在这个列表中分别得到每一段文字。我可以把它们放在div id之间吗?我将如何解决这些div?关键是我需要将此内容导出到xml。我可以将内容放在xml中,但问题是将这个html文本转换为单独的变量,所以我可以将em放在这些标记之间示例: HTML

<p id="artist">Sioen</p>
<p id="location">De Zwerver leffinge</p>
<p id="date>24/03/2012</p>

应该成为:(xml)

<concerts>
<concert>
<artist>Sioen</artist>
<location>De zwerver leffinge</location>
<date>24/03/2012</date>
</concert>
.....
</concerts>

由于评论表明我应该在某种结构中使用<p id=""> </p>的值使用var_dump而输出为

Sioen

De Zwerver leffinge

24/03/2012
...

2 个答案:

答案 0 :(得分:1)

  

它的输出是:

如果输出字面意思是你所说的,那是不可能的。我的意思是,我知道“Kraantje Pappie Nijdrop Opwijk”意味着艺术家是“Kraantje Pappie”,位置是“Nijdrop Opwijk”,但那是因为我是荷兰人,我碰巧喜欢“Kraantje Pappie”。大多数人甚至不知道在哪里拆分字符串,那么你想怎么告诉你的电脑怎么做?

如果结果来自数据库,也许你可以用不同的方式请求它?

<强>更新

  

由于评论表明我应该在某种结构中使用<p id=""> </p>的值使用var_dump而输出为

这些换行改变了一切。您现在可以在假设字符串中存在模式的情况下操作:艺术家,休息,位置,休息,日期,休息。如果有模式,您可以使用它。假设这是一种你总是得到的格式,你可以很简单地做到这一点:

<?php
$output = 'Sioen 

De Zwerver leffinge

24/03/2012 

Nathan

The zydeco Cha-Chas n9 Eeklo 

24/03/2012 

Kraantje Pappie 

Nijdrop Opwijk 

24/03/2012';

/**
 * Remove empty lines.
 */
$lines = array_map( 'trim', array_filter( explode( "\n", $output ) ) );

/**
 * This is for saving the values temporarily.
 */
$i = 0;
$entries = array( );
$current = array( );

/**
 * Loop through all the entries.
 */
foreach( $lines as $line ) {
    /**
     * Add the current line to the current entry.
     */
    $current[] = $line;

    /**
     * If $i == 2, that was the date. Add $current to the stack, and reset it's contents.
     */
    if( $i ++ === 2 ) {
        $entries[] = $current;
        $current = array( );
        $i = 0;
    }
}

/**
 * Build XML root.
 */
$concerts = new SimpleXmlElement( '<concerts></concerts>' );

/**
 * Append each entry as a concert.
 */
foreach( $entries as $entry ) {
    $concert = $concerts->addChild( 'concert' );

    $concert->addChild( 'artist', array_shift( $entry ) );  
    $concert->addChild( 'location', array_shift( $entry ) );    
    $concert->addChild( 'date', array_shift( $entry ) );    
}

/**
 * Output, finally.
 */
var_dump( $concerts->asXml( ) );

这导致以下输出:

<?xml version="1.0"?>
<concerts>
    <concert>
        <artist>Sioen</artist>
        <location>De Zwerver leffinge</location>
        <date>24/03/2012</date>
    </concert>
    <concert>
        <artist>Nathan</artist>
        <location>The zydeco Cha-Chas n9 Eeklo</location>
        <date>24/03/2012</date>
    </concert>
    <concert>
        <artist>Kraantje Pappie</artist>
        <location>Nijdrop Opwijk</location>
        <date>24/03/2012</date>
    </concert>
</concerts>

答案 1 :(得分:0)

如果您需要将内容放入带有数字ID的div中,例如

<div id='1'>Sportpaleis-Antwerpen-25/02/2012</div>
<div id='2'>Sioen-De Zwerver leffinge-24/03/2012</div>

现在当你获得数据时,使用php函数html_entity_decode通过php函数找到文本中的总div,然后循环它们以获得结果。

你可以将它们分开 - 得到一个div的三个不同部分。