1

我正在使用 SimplePie 显示 RSS 提要中第一项的标题,该提要在我被要求监控的立法机构中的账单发生问题时更新。这个立法机构发布 RSS 提要,我可以使用 SimplePie 获取并显示给需要信息的人。SimplePie 代码完美地完成了它的工作。

但是,我想在使用 preg_replace 回显输出之前对其进行修改,以对其进行一些清理。

我的原始 SimplePie 代码如下:

<?php $max = $feed->get_item_quantity(1); 
      for ($x = 0; $x < $max; $x++): 
          $item = $feed->get_item($x); 
?>
<?php echo $item->get_title(); ?>
<?php endfor; ?>

我尝试使用这个:

<?php $max = $feed->get_item_quantity(1); 
      for ($x = 0; $x < $max; $x++): 
          $item = $feed->get_item($x); ?>
<?php $str = '/([0-9]+) &#8211;/'; 
      $str = preg_replace('/([0-9]+) &#8211;/', '', $str); 
?>
<?php echo $item->get_title(); ?>
<?php endfor; ?>

...但它没有修改我的输出。它似乎没有做任何事情。我没有收到错误,但它不起作用。

当前的实际输出(只是一个项目标题)如下所示:

07 – 2013 年 3 月 1 日 – 提交规则委员会二读。

开头的两位数是无关信息。我想消除它和它后面的连字符,所以标题会像这样出现:

2013 年 3 月 1 日 – 提交规则委员会二读。

虽然,理想情况下,我认为它应该是这样的:

(2013 年 3 月 1 日) 提交规则委员会二读。

关于如何使这项工作的建议?

4

2 回答 2

0

请试试这个:-

$str = '07 – March 1, 2013 – Passed to Rules Committee for second reading.'; 
$str = preg_replace('/(^[0-9]+) –/', '', $str);
echo $str;

输出 :-

 March 1, 2013 – Passed to Rules Committee for second reading.

您的代码:-

    <?php $max = $feed->get_item_quantity(1); 
          for ($x = 0; $x < $max; $x++): 
              $item = $feed->get_item($x); ?>
    <?php $str = '/([0-9]+) &#8211;/';  <<======= your title string is regular expression here
          // assign your title string here  
          $str = preg_replace('/([0-9]+) &#8211;/', '', $str); 
    ?>
    <?php echo $item->get_title(); ?>
    <?php endfor; ?>  

更新代码:-

    <?php 
                $max = $feed->get_item_quantity(1); 
                for ($x = 0; $x < $max; $x++): 
                        $item = $feed->get_item($x); 
                        $title_str = $item->get_title();
                        $title = preg_replace('/(^[0-9]+) –/', '', $title_str); 

                        $pattern = '/(\w+) (\d+), (\d+)/i';
                        $replacement = '(${1} 1, $3)';
                        $title = preg_replace($pattern, $replacement, $title);  
                        echo $title;  
                endfor; 
     ?>

对于您想要的输出:-

$string = 'March 1, 2013 - Passed to Rules Committee for second reading.';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '(${1} 1, $3)';
echo preg_replace($pattern, $replacement, $string);

输出 :-

  (March 1, 2013) – Passed to Rules Committee for second reading.
于 2013-03-05T04:32:31.783 回答
0

需要像这样修改您的代码,您使用的 $str 应该包含您希望修改的字符串。

<?php $max = $feed->get_item_quantity(1); 
      for ($x = 0; $x < $max; $x++): 
          $item = $feed->get_item($x); 
 echo preg_replace('/([0-9]+) &#8211;/', '', $item->get_title()); ?>
<?php endfor; ?>
于 2013-03-05T04:43:29.353 回答