#php #loops
#php #циклы
Вопрос:
Я и несколько друзей, проходящих один и тот же курс программирования, были смущены этим в течение нескольких часов, надеюсь, кто-нибудь здесь сможет помочь. Цель состоит в том, чтобы взять список URL-адресов, разделить их на новые строки, добавить [ img] и добавить [/ img] для каждого URL-адреса, подходящего для доски объявлений. Фактический код включает переключатель, позволяющий использовать как [img], так и [thumb] bbcodes, но оба имеют одинаковый эффект. Вместо вывода
[ img]1[/ img]
[ img]2[/ img]
выводит
[ img]1
2[ /img]
То же самое происходит для любого количества URL-адресов. Вот код, который я использую.
<?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>
Комментарии:
1.
default
должно быть последним, вы знаете, иначе он пропустит что-либо за его пределами.2. В этом случае не похоже, но спасибо за совет.
3. Этот переключатель действительно напуган. Также лично никогда не видел значения по умолчанию ни для чего, кроме последней строки переключателя {}. Действительно ли $url заполняются так, как ожидалось?
4. Да, я пробовал повторять $urls[0], $ urls [1] И т. Д., Все они работают нормально.
Ответ №1:
Существует три разных типа новых строк: r, n и r n . Я не занимаюсь веб-разработкой, но разные операционные системы все равно, вероятно, будут отправлять разные новые строки, поэтому вам придется выполнить некоторую проверку, чтобы выяснить, с какими символами нужно разделить.
В вашем коде, поскольку n не работает, новая строка, вероятно, rn или r .
Редактировать: проблема может быть в строковом литерале в одинарных кавычках.
Комментарии:
1. Это имеет смысл. Как бы я проверил? Могу ли я просто разорвать его, а затем проверить длину?
2. Я что-то пропустил, так как давно не касался PHP. Используемые вами одинарные кавычки следует заменить двойными кавычками, чтобы escape-последовательности работали. Попробуйте это, и, если проблема все еще существует, я опубликую код.
3. Ааааа! Боже, напоминает мне, почему я так ненавижу PHP. Часами размышлять о разнице между одинарными и двойными кавычками… Это исправлено. Большое спасибо всем, кто помог.
4. @user1013452: это не просто PHP-изм. Многие (большинство? все?) языки сценариев, которые используют $ для переменных, различают
'
"
строки и .
Ответ №2:
Ваша проблема 'n' !== "n"
в том. Первая обрабатывается как «обратная косая черта n», в то время как последняя обрабатывается до символа перевода строки (ASCII 0xA, bein LF). Для получения дополнительной информации см. Строки в двойных кавычках.
Что касается вашего цикла, вы можете заглянуть в foreach .