【相关学习推荐:php编程(视频)】
大家都知道 libc 的 printf()
及其家族。本章节将详细介绍 PHP 声明和使用的许多克隆,它们的目标是什么,为什么使用它们,以及何时使用它们。
注意
Libc 中关于 printf()
及其朋友的文档位于此处。
你知道这些函数很有用,但有时无法提供足够的功能。另外,你知道向 printf()
添加格式字符串并非易事,没有便携性和有安全风险。
PHP 添加了自己的类似于 printf 的函数,取代了 libc 的,并且由内部开发者使用。他们主要添加新的格式,并使用 zend_string代替 char *
等等,让我们一起来看看。
警告
你必须掌握 libc 默认printf()
格式。请阅读它们的文档。
注意
添加了这些函数以 取代 libc 函数,意味着如果你使用了sprintf()
,不会使用到 libc 的sprintf()
,而是 PHP 取代了。除了传统的 printf()
外,其他内容均被替换。
首先,你不应该使用 sprintf()
,因为该函数不执行任何检查,并且导致许多缓冲区溢出错误。请避免使用它。
警告
尽可能避免使用 sprintf()
。
然后,你有一些选择。
如果你知道缓冲区大小,snprintf()
或者 slprintf()
都可以使用。这些函数虽然在返回上不同,但是它们的功能是一样的。
这两个都是根据传递的格式来打印,并且无论发生什么,都会通过一个NUL
字节 ‘