#php #string #printf
#php #строка #printf
Вопрос:
внезапно на моем сайте появляется новое предупреждение —
Соответствующий код:
printf ("<input type='text' name='C_Comment' value='" . $myComment . "' >");
Предупреждение, которое я получаю:
- Предупреждение: функция printf().printf: слишком мало аргументов
вероятно, потому, что $myComment равно null .
-
Я знаю, что смогу это исправить, если сначала проверю, равно ли значение null, и только потом объединю его. но есть ли более простой способ?
-
Почему я не получал это предупреждение раньше?
Спасибо,
Atara
РЕДАКТИРОВАТЬ: извините, неправильный заголовок. Проблема заключалась в том, что $myComment не был NULL, он содержал специальный символ.
Комментарии:
1. Почему «вероятно»? Вы не можете проверить это с
isnull
помощью?2. «Слишком мало аргументов» означает, что количество аргументов не соответствует требованию. Это не имеет ничего общего с содержимым в $myComment . Почему вы используете printf здесь?
3. Похоже, вы должны использовать
echo
вместоprintf
для этого — вы не предоставили строку формата с аргументами, просто строку.4. Спасибо всем за ваши быстрые ответы. Я собираюсь изменить этот код PRINTF на ECHO. Кто-нибудь может сказать мне, почему я не получал это предупреждение раньше?
5. @Atara Потому что только сейчас вы наткнулись на комментарий, который содержит то, что выглядит как заполнители printf .
Ответ №1:
Нет, вы получаете это предупреждение, потому что вы не даете достаточно аргументов для printf
; вероятно $myComment
, содержали заполнители printf, подобные %s
.
Используйте echo
вместо этого, если вы не хотите использовать printf
форматирование. Вы также можете переписать свой printf
вызов:
printf ("<input type='text' name='C_Comment' value='%s'>",
$myComment);
Убедитесь, что вы избежали специальных символов в $myComment
(см. htmlspecialchars
).
Ответ №2:
Вместо использования printf
просто используйте echo
:
echo "<input type='text' name='C_Comment' value='" . $myComment . "' >";
Ответ №3:
printf — это функция, используемая для форматирования строки с заданными значениями. Вы предоставили функции только один аргумент, поэтому она выдает эту ошибку вам в лицо.
Если вы просто хотите напечатать текст на странице, используйте echo (или просто удалите f и используйте print) с текущей строкой. Или вы можете сделать это:
printf("<input type='text' name='C_Comment' value='%s' />", $my_comment);
Вот PHP.net Страница Docs для printf(), и вы также можете просмотреть связанные функции в разделе «См. Также».
Ответ №4:
Добавьте это перед вызовом prinf, если у вас есть значение по умолчанию (которое не является пустым):
$myComment = ($myComment == null) ? 'yourdefaultvalue' : $myComment;
Конечно, echo также подойдет (и чем пустое значение больше не проблема):
<input type="text" name="C_Comment" value="<?=myComment?>" />
Комментарии:
1. Не будет иметь никакого эффекта. Проблема не в
NULL
этом, а в неправильном использованииprintf()