PHP循环错误 - 只循环部分循环?

时间:2011-10-25 20:01:16

标签: php loops

到目前为止,我和几个参加相同编程课程的朋友已经被这个困惑了好几个小时,希望这里有人可以提供帮助。 目的是获取一个网址列表,按新行划分,为每个网址添加[img]和附加[/ img],以适用于公告板。实际代码包括一个开关,允许[img]和[thumb] bbcodes,但两者都有相同的效果。 而不是输出

[ img]1[/ img]
[ img]2[/ img]

输出

[ img]1
2[ /img]

任何数量的网址都会发生同样的情况。这是我正在使用的代码。

   <?php

    $url_f = (isset($_POST['text'])) ? $_POST['text'] : false;
    $thumb = (isset($_POST['type'])) ? $_POST['type'] : false;
    $urls = ($url_f) ? explode('\n',$url_f) : '';

    ?>

    <textarea rows='20' cols='40' readonly='1'>


    <?php
    switch ($thumb){
        case 'img':
            for ($i = count($urls)-1; $i >= 0; $i--)
            {
                echo "[img]". $urls[$i] ."[/img]\n";
            }
            break;

        default:
            break;

        case 'thumb':
            for ($i = count($urls)-1; $i >= 0; $i--)
            {
                echo '[thumb]'. $urls[$i] ."[/thumb]\n";
            }
            break;

    }

    ?>

    </textarea>

2 个答案:

答案 0 :(得分:1)

<击> 有三种不同类型的换行符:\ r,\ n和\ r \ n。我不做很多网页开发,但不同的操作系统仍然可能会发送不同的换行符,所以你必须做一些检查才能找出要拆分的字符。

在你的代码中,由于\ n不起作用,换行符可能是\ r \ n或\ r \ n。

编辑:单引号字符串文字可能是问题。

答案 1 :(得分:1)

您的问题是'\n' !== "\n"。前者被视为“反斜杠n”,而后者则被处理为换行符(ASCII 0xA,bein LF)。有关详细信息,请参阅Double Quoted Strings

关于你的循环,你可能想看看foreach