如何删除while循环中的逗号?

时间:2018-01-16 07:41:42

标签: php wordpress

我正在使用如下的while循环:

<?php while(has_sub_field('available_locations')): ?>

    <a href="<?php the_sub_field('location_url'); ?>"><?php the_sub_field('locations'); ?></a>,

<?php endwhile; ?>

问题是Last Location还有逗号。例如:

  

加利福尼亚州,德克萨斯州,

但我想这样看:

  

加利福尼亚州,德克萨斯州

由于这包含HTML和PHP代码,我应该存储在变量中并使用rtrim来删除最后一个逗号,或者有更好的解决方案。如果我把它变成变量,我个人认为这不是一个好的解决方案。请回复。

更新:问题不在于只删除最后一个字符而是包含一个锚标记,如果我存储在一个变量中,那么它就不会创建超文本。喜欢

  

Google

但是在将其存储在变量中后,结果如下:

  

https://www.google.co.in Google

3 个答案:

答案 0 :(得分:3)

使用PHP substr()功能。

示例:

`substr("abcdef", 0, -1);  // returns "abcde"`

因此,在您的情况下,将所有输出HTML代码收集到变量$links,然后使用substr切断最后一个字符,并使用echo打印:

<?php 
$links = '';
while(has_sub_field('available_locations')){ 
   $links .= '<a href="'. the_sub_field('location_url') .'">'.  the_sub_field('locations') .'</a>,';
}
echo substr($links, 0, -1);
?>

或者使用构建数组并使用implode()

<?php 
$links = [];
while (has_sub_field('available_locations')) { 
   $links[] = '<a href="'. the_sub_field('location_url') .'">'.the_sub_field('locations').'</a>';
}
echo implode(', ', $links);
?>

修改
显然,用于生成URL的函数将其输出直接发送到浏览器,导致HTML链接损坏 为了避免这种情况,请使用PHP Output Control Functions来捕获输出并启用数据/字符串操作。

<?php
ob_start(); // Turn on output buffering
while(has_sub_field('available_locations')){
  '<a href="'. the_sub_field('location_url') .'">'.  the_sub_field('locations') .'</a>,';
}
$links = ob_get_contents(); // Get the contents of the output buffer
ob_end_clean(); // Clean (erase) the output buffer and turn off output buffering

echo substr($links, 0, -1); // removal of the last character, the comma.
?>

答案 1 :(得分:2)

一种选择是收集数组中的所有字符串,并使用implode加入它们。

.find({}).toArray(function (err, items){

答案 2 :(得分:1)

我认为您正在使用ACF插件,修剪最后一个逗号,您可以使用rtrim()功能与ACF的get_sub_field()或合并所有链接,如下面。

<?php
    $links = array();
    while( has_sub_field( 'available_locations' ) )
    {
      $links[] = '<a href="'.get_sub_field('location_url').'">'.get_sub_field('locations').'</a>';
    }
    echo implode( ', ', $links );
?>