字符串

官方文档: book.strings

字符串变量:

$txt="Hello world!";

并置运算符

PHP 中使用 . 作为连接符。如果连接的为非字符串,会隐式转化为字符串再进行连接。

$a=1;
$b=2;
echo $a . $b . "<br>"; // 12
echo $a + $b . "<br>"; // 3

字符串长度

strlen() 函数返回字符串的长度(字符数)

如果参数为非字符串,会隐式转化为字符串后计算字符串的长度。

strlen("Hello world!"); echo "<br>"; // 12
strlen(2000); echo "<br>"; // 4
strlen(true); echo "<br>"; // 1

字符串替换

  • str_ireplace(find,replace,string,count) 替换字符串中的一些字符(不区分大小写)
  • str_replace(find,replace,string,count) 替换字符串中的一些字符(区分大小写)
  • substr_replace(string,replacement,start,length) 把字符串的一部分替换为另一个字符串
  • strtr(string,from,to)strtr(string,array) 转换字符串中特定的字符

使用:

str_replace("world","Xiaoyu","Hello world!"); // Hello Xiaoyu
strtr("Hilla Warld","ia","eo"); // Hello World
substr_replace("Hello world","earth",6); // Hello earth
substr_replace("world","Hello ",0 ,0); // Hello world
$arr = array("Hello" => "Hi", "world" => "earth");
strtr("Hello world",$arr); // Hi earth

将数组中指定的字符串替换为目标字符串:

$arr = array("blue","red","green","yellow");
print_r(str_ireplace("e","[o]",$arr,$i));
echo "Replacements: $i";

输出:

Array
(
  [0] => blu[o]
  [1] => r[o]d
  [2] => gr[o][o]n
  [3] => y[o]llow
)
Replacements: 5

甚至可以使用数组进行替换:

$find = array("HELLO","WORLD");
$replace = array("B");
$arr = array("Hello","world","!");
print_r(str_ireplace($find,$replace,$arr));

输出:

Array
(
  [0] => B
  [1] =>
  [2] => !
)

一次性替换多个字符串,把数组中每个字符串中的 "AAA" 替换成 "BBB"

$replace = array("1: AAA","2: AAA","3: AAA");
join("<br>",substr_replace($replace,'BBB',3,3)); // 1: BBB 2: BBB 3: BBB

字符串切割

  • chunk_split(string,length,end) 把字符串分割为一连串更小的部分,返回一个新字符串。
  • str_split(string,length) 把字符串分割到数组中,返回一个数组。

使用:

chunk_split('Hello!',1,"."); // 'H.e.l.l.o.!.'
str_split("Hello",3); // ['Hel', 'lo']

字符串比较

  • strcmp(string1,string2) 比较两个字符串
  • strnatcasecmp(string1,string2) 使用一种"自然"算法来比较两个字符串(不区分大小写)
  • strnatcmp(string1,string2) 使用一种"自然"算法来比较两个字符串(区分大小写)
  • strncasecmp(string1,string2,length) 比较两个字符串(不区分大小写)
  • strncmp(string1,string2,length) 比较两个字符串(区分大小写)

返回值:

  • 0 - 如果两个字符串相等
  • <0 - 如果 string1 小于 string2
  • >0 - 如果 string1 大于 string2

字符子串位置

  • strpos(str, substr) 查找字符串在另一字符串中第一次出现的位置(区分大小写)
  • strrpos(str, substr) 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
  • strripos(str, substr) 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
  • stripos(str, substr) 查找字符串在另一字符串中第一次出现的位置(不区分大小写)

如果在字符串中找到匹配,返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

strpos("Hello world!","world"); // 6

字符串转换

  • strtolower(str) 函数把字符串转换为小写
  • strtoupper(str) 把字符串转换为大写
  • lcfirst(str) 把字符串中的首字符转换为小写
  • ucfirst(str) 把字符串中的首字符转换为大写
  • ucwords(str) 把字符串中每个单词的首字符转换为大写
  • strrev(str) 反转字符串
  • str_shuffle(str) 随机地打乱字符串中的所有字符

字符串截取

  • trim(str) 用于移除字符串两侧的空白字符和其他字符
  • ltrim(str) 移除字符串左侧的空白字符或其他预定义字符
  • rtrim(str) 移除字符串右侧的空白字符或其他预定义字符
  • substr(string,start,length) 返回字符串的一部分
echo trim("       Hello world!     "); // Hello world!
substr("Hello world",6); // world
substr("Hello world",0,5); // Hello
substr("Hello world",0,-2); // Hello wor

字符串填充

str_pad(string,length,pad_string,pad_type) 函数把字符串填充为新的长度。

  • pad_type: 规定填充字符串的哪边。可选的值: STR_PAD_BOTH | STR_PAD_LEFT | STR_PAD_RIGHT (默认)

使用:

echo str_pad("Hello World",20,"."); // Hello World.........
echo str_pad("Hello World",20,".", STR_PAD_LEFT); // .........Hello World

str_word_count

str_word_count(string,return,char) 计算字符串中的单词数。

return: 可选。规定 str_word_count() 函数的返回值。

  • 0 - 默认。返回找到的单词的数目。
  • 1 - 返回包含字符串中的单词的数组。
  • 2 - 返回一个数组,其中的键名是单词在字符串中的位置,键值是实际的单词。
str_word_count("Hello world!"); // 2
str_word_count("Hello world!",2); // Array([0] => Hello, [6] => world)

其他字符串函数

函数 说明 实例 返回
chr 从指定 ASCII 值返回字符 chr(65) 'A'
ord 返回字符串中第一个字符的 ASCII 值 ord("Hello") 72
md5 计算字符串的 MD5 散列 md5("Hello")
crc32 计算一个字符串的 32 位 CRC(循环冗余校验) crc32("Hello")
sha1 计算字符串的 SHA-1 散列 sha1('Hello')
str_repeat 把字符串重复指定的次数 str_repeat(".",3) '...'

Base64 的编码与解码

  • base64_decode 用于对使用 MIME base64 编码的数据进行解码
  • base64_encode 用于对数据使用 MIME base64 进行编码

语法

string base64_decode ( string $data [, bool $strict = false ] )
string base64_encode ( string $data )

示例

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo base64_decode($str); // This is an encoded string
$str = 'This is an encoded string';
echo base64_encode($str); // VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==

URL 的编码与解码

用于处理 URL 字符串: 编码,解码和解析。

参考资料: book.url

  • urldecode 解码已编码的 URL 字符串
  • urlencode 编码 URL 字符串

解码给出的已编码字符串中的任何 %##。 加号('+')被解码成一个空格字符。

语法

string urldecode ( string $str )
string urlencode ( string $str )

示例

// 解码
$query = "say=我是+中国人&myname=q z y";
echo urlencode($query); // say%3D%E6%88%91%E6%98%AF%2B%E4%B8%AD%E5%9B%BD%E4%BA%BA%26myname%3Dq+z+y
// 解码
$query = "say%3D%E6%88%91%E6%98%AF%2B%E4%B8%AD%E5%9B%BD%E4%BA%BA%26myname%3Dq+z+y";
echo urldecode($query); // say=我是+中国人&myname=q z y

URL 解析

  • parse_url 解析 URL,返回其组成部分

语法

mixed parse_url ( string $url [, int $component = -1 ] )

本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。

本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析。

示例

$url = 'http://username:password@hostname/path?a=0&b=1#anchor';
print_r(parse_url($url));

返回

array(7) {
  ["scheme"] => string(4) "http"
  ["host"] => string(8) "hostname"
  ["user"] => string(8) "username"
  ["pass"] => string(8) "password"
  ["path"] => string(5) "/path"
  ["query"] => string(9) "a=0&b=1"
  ["fragment"] => string(6) "anchor"
}

查询字符串: http_build_query

http_build_query 用于生成 URL-encode 之后的请求字符串。

语法

string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )

示例

// 使用关联数组
$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');
echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
// 使用普通数组
$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor');
echo http_build_query($data); // 0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor

查询字符串: parse_str

(parse_str)[http://php.net/manual/zh/function.parse-str.php] 用于将字符串解析成多个变量。

语法

void parse_str ( string $encoded_string [, array &$result ] )

示例

$str = "first=value&arr[]=foo+bar&arr[]=baz";
// 推荐用法,使用一个变量接收
parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
// 不建议这么用,所有变量暴露到全局
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress