到目前为止,我和几个参加相同编程课程的朋友已经被这个困惑了好几个小时,希望这里有人可以提供帮助。 目的是获取一个网址列表,按新行划分,为每个网址添加[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>
答案 0 :(得分:1)
<击> 有三种不同类型的换行符:\ r,\ n和\ r \ n。我不做很多网页开发,但不同的操作系统仍然可能会发送不同的换行符,所以你必须做一些检查才能找出要拆分的字符。
在你的代码中,由于\ n不起作用,换行符可能是\ r \ n或\ r \ n。
击>
编辑:单引号字符串文字可能是问题。
答案 1 :(得分:1)
您的问题是'\n' !== "\n"
。前者被视为“反斜杠n”,而后者则被处理为换行符(ASCII 0xA,bein LF)。有关详细信息,请参阅Double Quoted Strings。
关于你的循环,你可能想看看foreach。