使用preg_match_all过滤Feed标题

时间:2015-11-18 09:38:09

标签: php filter preg-match preg-match-all

请帮助我:)

我有这个代码可以过滤Feed标题。然而,这是一个混乱的无序列表。

$countItem = 0;
foreach ($feed->get_items() as $item): {
  $checktitle = $item->get_permalink();
  $keyword_one = '/keyword1/';
  $keyword_two = '/keyword2/';
  if (preg_match_all($keyword_one, $checktitle, $matches) && preg_match_all($keyword_two, $checktitle, $matches)) {
     echo $item->get_title();
  }
}
endforeach; ?>

我想在div课程中回应结果如下,但我不知道如何。如果我在preg_match_all之后放置div,则会出错。

<div class="item">
     <a href="<?php echo $item->get_title(); ?>"</a>
     <p><?php echo $item->get_description(); ?></p>
</div>

不知道该怎么做,你能帮帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

你不能在php中放置html代码。使用php close标签关闭php代码,然后添加html。请执行以下操作。

<?php
$countItem = 0;
foreach ($feed->get_items() as $item): {
    $checktitle = $item->get_permalink();
    $keyword_one = '/keyword1/';
    $keyword_two = '/keyword2/';
    if (preg_match_all($keyword_one, $checktitle, $matches) && preg_match_all($keyword_two, $checktitle, $matches)) { 
    // Closing php tag..
    ?>
        <div class="item">
             <a href="<?php echo $item->get_title(); ?>"</a>
             <p><?php echo $item->get_description(); ?></p>
        </div>
        <?php // Opening php tag after adding html..
    }
}

?>

答案 1 :(得分:0)

您只需使用enter image description herepreg_match代替preg_match_all

$items = array_filter($feed->get_items(), function ($item) {
    return preg_match('/keyword1|keyword2/', $item->get_permalink());
});

foreach ($items as $item) {
    echo '
<div class="item">
     <a href="' . $item->get_title() . '"</a>
     <p>' . $item->get_description() . '</p>
</div>';
}

此外,在前端和后端代码之间混合时要多加注意。在:循环后,您还需要额外foreachforeach ($feed->get_items() as $item): {