Pumpkin-Man

活到老_学到老!

0%

PHP-常用函数:2020.10.17

  • strlen():返回给定的字符串 string 的长度。

    • 例子如下:

      0qm1BR.png

  • mb_strlen:( string $str[, string$encoding= mb_internal_encoding() ] )

    • 参数

      • str:要检查长度的字符串。

        encoding: 参数为字符编码。如果省略,则使用内部字符编码。

      • 区别于strlen 它可以通过设置字符编码从而返回对应的字符数,很好的处理了中文字符串的长度问题。

      0qncZR.png

  • addslashes ( string $str ) : string

    • 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(**NULL** 字符)。

      0qnxSS.png

  • bin2hex ( string $str ) : string

    • 把二进制的参数 str 转换为的十六进制的字符串。转换使用字节方式,高四位字节优先。

      0quCes.png

  • chop:是 rtrim()的别名

    • 该函数删除 str 末端的空白字符(或者其他指定字符)并返回。

      0quQT1.png

  • chr ( int $ascii ) : string

    • 返回相对应于 ascii 所指定的单个字符。

    • 此函数与 ord() 是互补的。

      0quamd.png

  • crypt ( string $str[, string$salt ] ) : string

    • 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。

    • 基于标准 DES 算法的 crypt() 在输出内容的开始位置返回两个字符的盐值。它也只使用 str 的开始 8 个字符,所以更长的以相同 8 个字符开始的字符串也将生成相同的结果(当使用了相同的盐值时)。

    • CRYPT_STD_DES - 基于标准 DES 算法的散列使用 “./0-9A-Za-z” 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。

    • CRYPT_EXT_DES - 扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符,每个字符 6 位,有效位最少的优先。0 到 63 被编码为 “./0-9A-Za-z”。在盐值中使用非法的字符将导致 crypt() 失败。

    • CRYPT_MD5 - MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。

    • CRYPT_BLOWFISH - Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。 PHP 5.3.7 之前只支持 “$2a$” 作为盐值的前缀,PHP 5.3.7 开始引入了新的前缀来修正一个在Blowfish实现上的安全风险。可以参考» this document来了解关于这个修复的更多信息。总而言之,开发者如果仅针对 PHP 5.3.7及之后版本进行开发,那应该使用 “$2y$” 而非 “$2a$”

    • CRYPT_SHA256 - SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。

    • CRYPT_SHA512 - SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值

    • 以不同散列类型使用 crypt()

      0qu61S.png

  • htmlentities ( string $string[, int$flags= ENT_COMPAT | ENT_HTML401 [, string$encoding= ini_get("default_charset") [, bool$double_encode = **TRUE** ]]] ) : string

    • 将字符转换为 HTML 转义字符

      0qK91O.png

  • implode ( string $glue, array$pieces ) : string

  • 将一个一维数组的值转化为字符串

  • 参数:

    • glue:默认为空的字符串。

    • pieces:你想要转换的数组。

      0qK1Bj.png

  • md5_file ( string $filename[, bool$raw_output = **FALSE** ] ) : string

    • 计算指定文件的 MD5 散列值

    • 参数:

      • filename:文件名.

      • raw_output:如果被设置为 **TRUE**,那么报文摘要将以原始的 16 位二进制格式返回.、

        0qKsER.png

  • str_replace($search,$replace,$subject,$count)

    • 子字符串替换

    • 参数:

      • search:查找的目标值,也就是 needle。一个数组可以指定多个目标。

      • replacesearch 的替换值。一个数组可以被用来指定多重替换。

      • subject:执行替换的数组或者字符串。也就是 haystack

        如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。

      • count:如果被指定,它的值将被设置为替换发生的次数。

        0qK5bd.png

  • str_split ( string $string[, int$split_length = 1 ] ) : array

    • 将一个字符串转换为数组.

    • 参数:

      • string :输入字符串。

      • split_length:每一段的长度。

      • 返回值:如果指定了可选的 split_length 参数,返回数组中的每个元素均为一个长度为 split_length 的字符块,否则每个字符块为单个字符。

        如果 split_length 小于 1,返回 **FALSE**。如果 split_length 参数超过了 string 超过了字符串 string 的长度,整个字符串将作为数组仅有的一个元素返回。

        0qMEMF.png

  • split ( string $pattern, string$string[, int$limit ] ) : array

  • 用正则表达式将字符串分割到数组中

    • 本函数返回一个字符串数组,每个单元为 string 经区分大小写的正则表达式 pattern 作为边界分割出的子串。如果设定了 limit,则返回的数组最多包含 limit 个单元,而其中最后一个单元包含了 string 中剩余的所有部分。如果出错,则 split() 返回 **FALSE**。

      0qMJqH.png

  • strcmp ( string $str1, string$str2 ) : int

  • 二进制安全字符串比较

    • 参数:

      • str1:第一个字符串。
      • str2:第二个字符串。
    • 返回值:如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

      0qMBz8.png

  • strcasecmp ( string $str1, string$str2 ) : int

  • 二进制安全比较字符串(不区分大小写)。

    • strcmp返回值一样

      0qMyLQ.png

  • strstr($haystack,$needle,$before_needle)

  • 查找字符串的首次出现.

    • 参数:

    • $haystack:输入字符串。

    • $needle:如果 needle 不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。

    • $before_needle:若为 **TRUE**,strstr()将返回 needlehaystack 中的位置之前的部分。

    • 返回值:返回字符串的一部分或者 **FALSE**(如果未发现 needle)。

      0qMgds.png

  • substr ( string $string, int$start[, int$length ] ) : string

  • 返回字符串的子串,返回字符串 stringstartlength 参数指定的子字符串。

    • 参数:

    • string:输入字符串。必须至少有一个字符

    • start:如果 start 是非负数,返回的字符串将从 stringstart 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。

      0qMWiq.png

  • preg_match ( string $pattern, string$subject[, array&$matches[, int$flags= 0 [, int$offset = 0 ]]] ) : int

  • 执行匹配正则表达,搜索subjectpattern给定的正则表达式的一个匹配.

  • 参数:

    • $pattern:要搜索的模式,字符串类型。

    • $subject:输入字符串。

    • $matches:如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。

    • $flags:可以被设置为以下标记值的组合:

      • PREG_OFFSET_CAPTURE
      • 如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的字节数)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。
    • $offset:可选参数 offset 用于 指定从目标字符串的某个位置开始搜索(单位是字节)

      0qMoyF.png

  • preg_match_all ( string $pattern, string$subject[, array&$matches[, int$flags = **PREG_PATTERN_ORDER** [, int $offset = 0 ]]] ) : int

  • 执行一个全局正则表达式匹配,搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中.

  • 在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.

    • 参数与preg_match类似

      0qMTL4.png

  • intval($var,$base)

  • 获取变量的整数值

    • 参数:

      • var:要转换成 integer 的数量值
      • base:转化所使用的进制
    • 返回值:成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1

    • 最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例,在这样的系统上, intval('1000000000000') 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。

    • 字符串有可能返回 0,虽然取决于字符串最左侧的字符。 使用 整型转换 的共同规则

      0qMjW6.png

  • floatval($var): float

  • 获取变量的浮点值,返回变量 varfloat 数值。

    0qQpOe.png

  • strval($var):string

  • 获取变量的字符串值

    • 参数:$var

      0qQCeH.png

  • settype($var,$type):bool

  • 设置变量的类型

  • 参数:

    • var:要转换的变量。

    • type

      • `type` 的可能值为:的可能值为:
        - “boolean” (或为“bool”,从 PHP 4.2.0 起)
        - “integer” (或为“int”,从 PHP 4.2.0 起)
        - “float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
        - "string"
        - "array"
        - "object"
        - “null” (从 PHP 4.2.0 起)
    • 返回值:成功时返回 **TRUE**, 或者在失败时返回 **FALSE**。

      0qQEfP.png

使用if和switch写一个例子

  • 如下:

    0qQ8f0.png

for foreach while等循环结构写一个例子,结合前面的逻辑比较。

  • For循环

    0qQvAs.png

  • Foreach:foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。

    0qQxNn.png

  • while循环:只要指定的条件为真,while 循环就会执行代码块。

    0qQzhq.png