如何在PHP中检查它是否是普通的字符串或二进制字符串?

App*_*rew 11 php string

可能重复:
如何在PHP中检查文件是ASCII还是二进制

我有一个函数,它接受图像文件的名称(即普通字符串),或者它可以直接接受图像字节作为二进制字符串.由返回file_get_contents.

我如何区分这两者?

Arn*_*anc 15

您可以检查输入是否仅由可打印字符组成.你可以用ctype_print()来做到这一点:

if (ctype_print($filename)) { // this is most probably not an image
Run Code Online (Sandbox Code Playgroud)

您还可以检查参数是否是有效图像,或者是否存在具有该名称的文件.

但是,创建两个单独的函数会更好,更可靠:

  • 一个load_image_from_string(),它总是将图像作为参数
  • 和一个load_image_from_file(),它将读取文件并调用load_image_from_string()

  • 此外,你可以尝试有根据的猜测 - 如果字符串的长度超过1k字节,它很可能是图像. (2认同)
  • @AppleGrew:让构造函数变得愚蠢,不要为它们添加太多代码.而是创建两个可以具有相同父类的对象.一个期望文件名字符串,另一个期望二进制数据字符串或类似.或者创建一个小心的工厂方法. (2认同)

归档时间:

查看次数:

9697 次

最近记录:

14 年,5 月 前