PHP笔记--字符串操作

字符串是指由零个或多个字符构成的一个集合,这里所说的字符串主要包含以下几种类型:

数字类型(1,2,3)、字母类型(a,b,c)、特殊字符(#,$,%)、不可见字符(\n,\r,\t)

单引号和双引号: 双引号中的内容是经过PHP的语法分析器解析过的,任何变量在双引号中都会被转换成它的值

在进行SQL查询之前,所有字符串都必须加单引号,防止注入漏洞和SQL错误

字符串连接使用 . 。无法实现大量字符串连接,建议使用双引号包含变量的方式

去除字符串收尾空格和特殊字符: trim()

string trim(string str [, string charlist]);  

charlist: 可选,指定需要从字符串中删除哪些字符,默认可选值: \0,\t,\n,\x0B,\r,空格,也可自己提供

凡是在字符串收尾出现在charlist中的字符都会去除

ltrim()去除左边的,rtrim()去除右边的

$str = "   dfdf dfdg  #";
$str1 = "#  abc # ";
echo trim($str).'
'; // "dfdf dfdg #" echo trim($str,' #').'
'; // "dfdf dfdg" echo trim($str,'# ').'
'; // "dfdf dfdg" echo trim($str1).'
'; // "# abc #" echo trim($str1,'#').'
'; // " abc # " echo trim($str1,'# ').'
'; // "abc" echo trim($str1,' #').'
'; // "abc"
转义、还原字符串数据:

手动转义、还原:自己手动添加、删除 ‘\’

自动转义:使用addslashes()和stripslashes()

$str = "asdf\"ghjkl\"qwe";
echo stripcslashes($str);   //"asdf"ghjkl"qwe"
// addslashes($str)字符串为 "asdf\\\"ghjkl\\\"qwe"
// 在所有的 \ 和 " 前面都添加一个 \
echo addslashes($str);      //"asdf\"ghjkl\"qwe"
echo stripcslashes($str);   //"asdf"ghjkl"qwe"
addcslashes()和stripcslashes()对指定范围内的字符串进行转义、还原

string addcslashes(string str, string charlist);

string stripcslashes(string str, string charlist);

在charlist中,包含的\n、\r等字符,将以C语言风格转换,而其他非字母数字且ASCII码低于32或高于126的字符均转换成八进制表示。

获取字符串长度: strlen(); 汉子占两个字符    $len = strlen($str);

截取字符串: PHP预定义函数substr(),特别中文截取乱码的问题

string substr(string str, int start [, int length]);

start: 指定开始截取的位置,如果W为负数,则从字符串的末尾开始截取

length: 可选,指定截取字符个数,如果为负,表示截取到倒数第length个字符

start、length全为负数没有结果

$str = "asdfghjkl";
echo substr($str,1,5).'
'; //sdfgh echo substr($str,1,-5).'
'; //sdf echo substr($str,-3,5).'
'; //jkl 到字符串结尾提前结束了
比较字符串:

按字节进行字符串比较的方法有两种:strcmp()和strcasecmp()(不区分大小写),函数返回小于0、等于0、大于0三种结果

按自然排序法进行字符串的比较:strnatcmp(), 比较字符串中的数字部分 strnatcasecmp()不区分大小写,有意思吗?数字还有大小写?

echo strnatcmp("qwe1023sf","wrer34"); // -1
// 1023中第一个数字是1 比34中3小
从指定字符串位置开始比较:  int strncmp($str1,$str2,int len); len指定每个字符串参与比较的字符数量

字符串检索:









你可能感兴趣的:(PHP笔记--字符串操作)