PHP: Как объединить NULL в строку

#php #string #printf

#php #строка #printf

Вопрос:

внезапно на моем сайте появляется новое предупреждение —

Соответствующий код:

 printf ("<input type='text' name='C_Comment' value='" . $myComment . "'  >");
  

Предупреждение, которое я получаю:

  • Предупреждение: функция printf().printf: слишком мало аргументов

вероятно, потому, что $myComment равно null .

  1. Я знаю, что смогу это исправить, если сначала проверю, равно ли значение null, и только потом объединю его. но есть ли более простой способ?

  2. Почему я не получал это предупреждение раньше?

Спасибо,

Atara

РЕДАКТИРОВАТЬ: извините, неправильный заголовок. Проблема заключалась в том, что $myComment не был NULL, он содержал специальный символ.

Комментарии:

1. Почему «вероятно»? Вы не можете проверить это с isnull помощью?

2. «Слишком мало аргументов» означает, что количество аргументов не соответствует требованию. Это не имеет ничего общего с содержимым в $myComment . Почему вы используете printf здесь?

3. Похоже, вы должны использовать print or 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()