PHP 如何删除最后一个分隔符


PHP how to remove last separator?

我已经尝试了大量的变化,但我找不到解决方案。以前输出是这样的:

  1. 字 A
  2. 单词 B
  3. 单词 C等

我已经更改了代码的某些部分,现在输出是:

单词 A | 单词 B | 单词 C |

如何删除最后一个分隔符?

代码为:

<div id="right">
        <div id="synonyms">
        <?
        $separator = '<span class="pipe">|</span>';
        $sql = mysql_query("SELECT DISTINCT word, id_word FROM words WHERE word LIKE '$word' ORDER BY word ASC LIMIT 100");
        echo mysql_error();
        while ($row=mysql_fetch_row($sql))
            {
                $word_synonym = $row[0];        
                $id_word_synonym = $row[1];                 

                        $sql2 = mysql_query("SELECT DISTINCT synonym, id_synonym FROM synonyms WHERE id_word = '$id_word_synonym' ORDER BY synonym ASC");
                        echo mysql_error();
                        $num_results =mysql_num_rows($sql2);
                        while ($row=mysql_fetch_row($sql2))
                            {
                            $synonym = $row[0];
                            $id_synonym = $row[1];
                            $synonym2 = str_replace(" ", "+", $synonym);
                            echo "".$separator."<a href=".$site_url."/?word=".$synonym2.">".$synonym."</a>  ";

                            }
            }
        ?>
        </div>

我试图添加$separator = substr($separator, -1, 0);和许多其他建议,但没有结果。

在做这样的事情时,我的偏好是构建一个字符串数组,然后在输出最终字符串时使用implode。这特别有用,因为这样我就可以做其他事情,例如合并组、过滤它们等。

这之前发布并被删除,但我认为值得将其作为可选方法包含在内。虽然我更喜欢Kolink的方法,但我也用过这个:

使用迭代器 ($i) 标识第一个(或最后一个)项。

$i=0;
while ($row = mysql_fetch_row($sql2)) {
  $i++;
  $synonym = $row[0];
  $id_synonym = $row[1];
  $synonym2 = str_replace(" ", "+", $synonym);
  echo ($i>1?$separator:"").'<a href="$site_url/?word=$synonym2">$synonym</a>';
}

不是这个答案的一部分,但这里有一个Kolink(可以说是优越的)方法的例子:

$links=array();
while ($row = mysql_fetch_row($sql2)) {
  $synonym = $row[0];
  $id_synonym = $row[1];
  $synonym2 = str_replace(" ", "+", $synonym);
  $links[]='<a href="$site_url/?word=$synonym2">$synonym</a>';
}
if (!empty($links)) {
  echo implode($separator,$links);
}