PHP fscanf vs fgets

时间:2016-06-10 07:45:11

标签: php fgets scanf

我可以使用byte[] imageBytes = rs.getBytes("doctimg"); if (rs.wasNull()) { System.out.println("It was null!"); // or some more robust treatment } else { // Wasn't null, let's use it String imageBase64 = DatatypeConverter.printBase64Binary(imageBytes); } 读取一行中的整个字符串,但fgets()没有这样做。

根据PHP手册

  

fscanf - 根据格式

解析文件中的输入      

函数fscanf()类似于fscanf(),但它从与handle相关联的文件中获取其输入,并根据指定的格式解释输入,这在{{1}的文档中有所描述。 }}

     

fgets - 从文件指针

获取行      

从文件指针获取一行。

由于sscanf()支持上述格式,因此我可以使用sprintf()来读取整行,但只读取一个字。

1 个答案:

答案 0 :(得分:3)

fscanf()sscanf()的PHP文档不完整。格式类似于printf()使用的格式,但它们并不完全相同。当您打印时,%s将打印任何字符串,但是当您扫描它时,它只会读取一个单词。要获得更完整的信息,您需要阅读C fscanf()函数的文档。其中一些信息也在文档网页的评论部分。

要使用fscanf()阅读整行,请使用"%[^\\n]"。在fscanf()中,$[^characters]表示匹配括号内不在集合中的任何字符序列(在正则表达式中类似于[^characters]*)。所以这匹配除换行之外的任何字符序列。见http://php.net/manual/en/function.sscanf.php#56076