我正在使用如下的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来删除最后一个逗号,或者有更好的解决方案。如果我把它变成变量,我个人认为这不是一个好的解决方案。请回复。
更新:问题不在于只删除最后一个字符而是包含一个锚标记,如果我存储在一个变量中,那么它就不会创建超文本。喜欢
但是在将其存储在变量中后,结果如下:
https://www.google.co.in Google
答案 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 );
?>