字符串

字符串

去除空白或其他字符函数(trim,ltrim,rtrim)

// 不会改变原始字符串
// 去除首尾空白字符串
trim($str[,$charlist]);
// 第二个关键字不指定时:去除下面的字符串
" " :普通空格符
"\t" :制表符
"\n" :换行符
"\r" :回车符
"\0" :空字节符
"\x0B" :垂直制表符
// 例如:
echo trim(" hello,world ") // =>输出hello,world,左右没有空格

// 指定第二个参数,它的含义就变化为:去除字符串的前后指定字符串
echo trim("hello,world","h") // =>输出ello,world,相当于去除首尾的"h"

// 同时去除首位的多个字符串
echo trim("34ssddfcs", "3s");// => 输出4ssddfc

// 注意!去除字符串的方式是去除所有的限定字符串,没有去除个数的限制!
echo trim("abcacdefcda", "abc"); // => 输出defcd

ltrim,rtrim // 去除指定的首/尾(左/右)字符串

大小写转换函数(strtoupper,strtolower)

// 转换全部字符串为大写
strtoupper()
// 转换全部字符串为小写
strtolower()

字符串查找函数(substr_count,strpos,strstr)

// 返回$needl字符串在$haystack出现的次数
// string $haystack : 被搜索字符串
// string $needle : 想要搜索出的某字符串
// int $offset=0 : 开始计数的偏移位置
// int $length : 指定偏移位置后的最大搜索长度,加上$offset大于haystack时出警告
// ---
// [,int $offset=0[,int $length]]理解起来,就是从$offset开始计算$length个字符串,在这范围内查指定字符串
// 初始的范围依然时从0到长度-1的整数
// 不计算重叠字符串(例如在gcdgcdgcd搜索gcd,返回的次数只有1次)
substr_count(string $haystack,string $needle[,int $offset=0[,int $length]])


// 查找字符串首次出现位置的索引值
// string $haystack,string $needle : 和上面的一样.
// 找不到返回false,找得到返回它的第一个的下标值
strpos(string $haystack,string $needle[,int $offset=0])
// int $offset=0 : 控制查找的起始字符串位置,查找出来的下标是相对于$haystack的

// 截取字符串
// 没带上第三个参数时:
// 查找字符串$needle的首次出现的位置,并且从该位置开始截取后面的所有字符串
// 第三个参数为true时:返回的是搜索参数前面的所有参数
strstr(string $haystack,string $needle[,bool $before_needle])
echo strstr("adbbfa1dsxf", "b"); // => 返回:bbfa1dsxf
echo strstr("adbbfa1dsxf", "b",true); // => 返回:ad

字符串替换函数

// 替换字符串,且是所有的合适的字符串.
// search参数用于 指定要替换的字符串;
// replace参数用于 指定替换后的字符串;
// subject参数用于 指定要替换的字符串,如果是数组,会遍历整个数组进行替换,返回值也是一个数组
// 前三个参数,都可以传入数组!
// count参数用于 统计替换了多少次
str_replace(search,replace,subject[,count])
// 简单演示如下
echo str_replace("你好", "真的非常感谢这个", "你好世界!");
// 输出:真的非常感谢这个世界!

// 同时修改多个参数的办法:
// 也可以使用数组,这样子就可以修改多个参数了
$a = "12345,咱一起学习吧!12345,不要放弃呀!";
echo str_replace(array(1, 2, 3, 4), array("c", "d", "e", "f"), $a);
// 返回:cdef5,咱一起学习吧!cdef5,不要放弃呀!

与html标签相关的函数

主要的转换规则如下:

& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >

// htmlspecialchars()
// 差不多就是让html的一些字符不被正常的解析,显示出原来的样子
$str4 = <<<START
<p style="color:red;font-size:30px">我们的努力是有意义的!</p>
START;
// 普通的返回
echo $str4 . "<br>\n";
// 转换后的返回,不会被解析为对应的标签效果
echo htmlspecialchars($str4) . "<br>\n";

// 下面是来自vscode的回显效果
<p style="color:red;font-size:30px">我们的努力是有意义的!</p><br>
&lt;p style=&quot;color:red;font-size:30px&quot;&gt;我们的努力是有意义的!&lt;/p&gt;<br>


// strip_tags()
// 去除字符串当中的xml/html/php标签
// string:字符串
// allow :白名单,规定不去除某标签。
strip_tags(string,allow)
// 如下1:
echo strip_tags("<d><a></a><input>112123</d><strong>你好</strong>", "<d><a>") . "<br>\n";
// 返回112123你好<br>
// 如下2:
echo strip_tags("<d><a></a><input>112123</d><strong>你好</strong>", "<d><a><strong>") . "<br>\n";
// 返回<d><a></a>112123</d><strong>你好</strong><br>

// 综上所述,根据观察得出,白名单必须是带顺序的过滤,否则会报错

字符串截取函数

参数说明(取自菜鸟教程)

参数 说明
string 必需。规定要返回其中一部分的字符串。
start 必需。规定在字符串的何处开始。
+ 正数 - 在字符串的指定位置开始
+ 负数 - 在从字符串结尾的指定位置开始
+ 0 - 在字符串中的第一个字符处开始
length 可选。规定要返回的字符串长度。默认是直到字符串的结尾。
+ 正数 - 从 start 参数所在的位置返回
+ 负数 - 从字符串末端返回
substr(string,start,length);

字符串分隔函数

explode(separator,string[,limit]);
// 使用一个字符串来分割另一个字符串
// separator :用什么字符串来分割
// string :原始字符串(被分割的字符串)
// [,limit] :[正:返回最多limt个元素的数组;负:返回除了-limt以外的所有元素的数组;0:返回包含1个元素的数组]
// 如下
// 返回包含一个元素的数组
print_r(explode(',',$str,0));
print "<br>";

// 数组元素为 2
print_r(explode(',',$str,2));
print "<br>";

// 删除最后一个数组元素
print_r(explode(',',$str,-2));
// -------
Array
(
[0] => one,two,three,four
)
<br>Array
(
[0] => one
[1] => two,three,four
)
<br>Array
(
[0] => one
[1] => two
)



str_split(string,length);
// 将字符串转换为数组
// 将字符串string分割成每个元素为length长的字符串数组。
// 如下
print_r(str_split("hello,world", 3));
// 结果
Array
(
[0] => hel
[1] => lo,
[2] => wor
[3] => ld
)

字符串函数 还有很多,具体还得看需求,届时自己学习即可。