【问题标题】:PHP how to remove last separator?PHP如何删除最后一个分隔符?
【发布时间】:2013-01-17 05:55:44
【问题描述】:

我尝试了很多变体,但找不到解决方案。之前的输出是这样的:

  1. 一个字
  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); 和许多其他建议,但没有结果。

【问题讨论】:

  • 不相关,但您可以将echo "".$separator."&lt;a href=".$site_url."/?word=".$synonym2."&gt;".$synonym."&lt;/a&gt; "; 替换为echo "$separator&lt;a href=$site_url/?word=$synonym2&gt;$synonym&lt;/a&gt;";

标签: php separator


【解决方案1】:

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

【讨论】:

  • 我这样做应该是违法的
  • 我也喜欢这种方法。很干净。类似implode($separator,$values)
  • 我也这样做,但我更愿意承认
【解决方案2】:

这是之前发布并删除的,但我认为值得将其作为可选方法包含在内。虽然我更喜欢 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多