我能够使用fgets()
读取一行中的整个字符串,但fscanf()
不这样做。PHP fscanf vs fgets
根据PHP手册
的fscanf - 从文件根据格式
功能
fscanf()
类似于sscanf()
解析输入,但它从与手柄和解释相关联的文件其输入根据指定的格式输入,这在sprintf()
的文档中有描述。fgets - 从文件指针获取行
从文件指针获取一行。
由于fscanf()
支持如上面提到我可以使用%s
来读取整个行格式,而是它仅读出一个字。
我能够使用fgets()
读取一行中的整个字符串,但fscanf()
不这样做。PHP fscanf vs fgets
根据PHP手册
的fscanf - 从文件根据格式
功能
fscanf()
类似于sscanf()
解析输入,但它从与手柄和解释相关联的文件其输入根据指定的格式输入,这在sprintf()
的文档中有描述。fgets - 从文件指针获取行
从文件指针获取一行。
由于fscanf()
支持如上面提到我可以使用%s
来读取整个行格式,而是它仅读出一个字。
fscanf()
和sscanf()
的PHP文档不完整。格式与printf()
使用的格式类似,但它们不完全相同。当您打印时,%s
将打印任何字符串,但是当您扫描它时,只会读取一个字。要获得更完整的信息,您需要阅读C
fscanf()
函数的文档。其中一些信息也位于文档网页的注释部分。
要使用fscanf()
读取整行,请使用"%[^\\n]"
。在fscanf()
,$[^characters]
表示匹配不在括号内的集合中的任何字符序列(它与正则表达式中的[^characters]*
类似)。因此,它匹配除换行符以外的任何字符序列。请参阅http://php.net/manual/en/function.sscanf.php#56076
谢谢你这样做,但我试过**%[^ \] **,它仍然有效,所以** \ n **的需求是什么。 – phpNoob
括号应该包含至少一个要排除的字符。也许它在PHP中起作用,因为即使你没有明确说出,它也会自动停止在行尾。 – Barmar
根据PHP手册每次调用fscanf()都会从文件中读取一行。 – phpNoob