Correcting teacher:Guanhui
Correction status:qualified
Teacher's comments:你可以把字符串看成一个数组,每个字符都是数组中的元素,而strpos就是获取字符在字符串中的下标引索。说简单点就是获取字符在字符串中的位置,要注意的是字符串位置从 0 开始,不是从 1 开始。
// 1.单引号中无法直接解析字符串以及特殊字符
$str = 'string';
echo '字符串拼接的方式:','this is a ' .$str. 'haha';
echo '<br>';
// 在单引号:单引号中的字符串又出现单引号,需要用到转义符,或者直接用双引号
echo '转义符(\)方式:', 'xixi\'haha\'lala';
echo '<br>';
echo '直接套用双引号:','xixi"haha"lala';
echo '<br>';
// 在字符串中输出转义符:\ 。连续写两个
echo '字符串中输出转义符:\ :','xixi"haha"lala\\';
echo '<hr>';
// 2. 双引号:可以直接解析变量和特殊字符但是变量一般用{}整体包起来
echo '双引号中的变量推荐直接用{}整体包裹起来:',"this is a {$str}123";
echo '<br>';
echo '要在源代码中查看回车换行:网页只解析成一个空格:', "xixi \n\r haha";
echo '<hr>';
// 3.heredoc: 双引号增强版,字符串不需要双引号定界符
//语法:
/*<<< 名字
...
名字;
*/
$name = 'php中文网';
echo <<< LALA
哪里学习php <p style="color:green">$name</p>
LALA;
echo '<br>';
//4.nowdoc 单引号增强版:字符串不需要单引号定界符 与 heredoc 区别, 在名字上必须加上单引号
//语法:
/*<<< '名字'
...
名字;
*/
$name = 'php中文网';
echo <<< 'LALA'
哪里学习php <small style="color:red">php中文网</small>
LALA;
// printf('模板',替换掉模板中的占位符): 将输出的字符串按指定的格式模板输出
// 模板中 %s 代表字符串;%d 代表整数
printf('SELECT * FROM `%s` LIMIT %d', 'zsp0',10);
echo '<hr>';
//vprintf():功能与printf一样,参数不同,参数放在数组
vprintf('SELECT * FROM `%s` LIMIT %d', ['zsp0',10]);
echo '<hr>';
// sprintf(): 返回格式化的字符串,而不是输出
echo sprintf('SELECT * FROM `%s` LIMIT %d', 'zsp0',20);
echo '<br>';
// 更多的时候不会直接打印而是放到一个变量中或者保存到一个文件中
$sql = sprintf('SELECT * FROM `%s` LIMIT %d', 'zsp0',20);
echo '放到$sql变量中:', $sql ,'<br>';
// 放到文件中
file_put_contents('sql.txt',$sql);
echo '<hr>';
//vsprintf():与sprintf 功能相同 ,参数放到数组中
$sql = vsprintf('SELECT * FROM `%s` LIMIT %d', ['zsp0',30]);
echo '放到$sql变量中:', $sql ,'<br>';
// 放到文件中
file_put_contents('sql1.txt',$sql);
echo '<hr>';
//implode(separator,array)函数返回由数组元素组合成的字符串。
// separator可选。规定数组元素之间放置的内容。默认是 " "(空字符串)。array 必需。要组合为字符串的数组。
$arr = ['i','love','php','yes'];
echo '默认" ":',implode(" ",$arr),'<br>';
echo '元素中间放**:', implode("**",$arr),'<br>';
// 同名函数join
echo '同名函数join,元素中间放---:', join("---",$arr),'<hr>';
// explode(separator,string,limit):字符串---》数组
// separator必需。规定在哪里分割字符串。string 必需。要分割的字符串。limit可选。规定所返回的数组元素的数目。
//limit 大于 0 - 返回包含最多 limit 个元素的数组;
//小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组
//0 - 返回包含一个元素的数组
// 链接数据库
$str = 'localhost, root, root, utf8, 3306';
print_r (explode(', ',$str));
//返回包含三个元素的数组
print_r (explode(', ',$str,3));
echo '<hr>';
//list将一个索引数组中的元素解析到独立变量中
//list($a,$b) = [100,200];
//echo $a,$b,'<br>';
$str = array('localhost', 'root', 'root2', 'utf8', '3306');
list($a,$b,$c,$d,$e) = $str;
echo "第一个数组元素:{$a}和倒数第二个数组元素:{$d}";
// substr(string,start,length):函数返回字符串的一部分。
/*
string 必需。规定要返回其中一部分的字符串。
start 必需。规定在字符串的何处开始。
正数--在字符串的指定位置开始.
负数--在从字符串结尾开始的指定位置开始,
0 --在字符串中的第一个字符处开始
length可选。规定被返回字符串的长度。默认是直到字符串的结尾。
正数 - 从 start 参数所在的位置返回的长度
负数 - 从字符串末端返回的长度
如果start参数是负数且length <= start,则length为 0。
*/
echo substr('abcdef',0),'<br>';
echo substr('abcdef',2),'<br>';.
// 从索引2开始取两个所以返回cd
echo substr('abcdef',2,2),'<br>';
echo substr('abcdef',-1),'<br>';
// 第二个参数是负数 不传第三个参数 默认就是到结束所以是def
echo substr('abcdef',-3),'<br>';
echo substr('abcdef',-3,2),'<hr>';
//str_split(string,length) :把字符串转为数组,可指定数组元素的宽度,不支持中文
print_r(str_split('php.cn',2));
//str_getcsv() 解析 CSV 格式字段的字符串,并返回包含所读取字段的数组。
print_r(str_getcsv('1,php,cn'));
echo '<hr>';
// file_get_contents() 将一个文件读到变量中
$csv = file_get_contents('text.csv');
print_r($csv);
echo '<br>';
// 切割数组
$exp = explode("\n",$csv);
print_r($exp);
echo '<hr>';
// str_pad(string,length,pad_string,pad_type):函数把字符串填充为新的长度
//string必需。规定要填充的字符串。
//length必需。规定新字符串的长度。如果该值小于原始字符串的长度,则不进行任何操作。
//pad_string 可选。规定供填充使用的字符串。默认是空白。
//pad_type 可选。规定填充字符串的哪边。STR_PAD_RIGHT--填充字符串的右侧。这是默认的。LEFT左边,BOTH两边,不是偶数右边多
$str = 'php.cn';
echo str_pad($str,50,'+',STR_PAD_BOTH);
// str_replace(find,replace,string,count) 函数替换字符串中的一些字符(区分大小写)。
//find 必需。规定要查找的值
//replace 必需。规定替换 find 中的值的值,可以用数组个性化
//string 必需。规定被搜索的字符串。
//count 可选。一个变量,对替换数进行计数。
$str = '我们国家不允许任何黄,赌,毒的行为';
$serach = ['黄','赌','毒'];
echo str_replace($serach,['***','---','???'],$str,$c);
echo '<br>';
echo '被替换:' .$c. '次';
echo '<hr>';
$str = ' a ';
echo '原始长度',strlen($str),'<br>';
echo '现长度',strlen(trim($str)),'<hr>';
$str = '1617957899qq.com php中文网 this is 1617957899';
echo $str,'<br>';
echo trim($str,'1..9'),'<hr>';
$a = 'admin@qq.com';
//拿到.右边的:(此处包含点号)
echo strstr($a,'.'),'<br>';
// 只要com
echo trim(strstr($a,'.'),'.'),'<br>';
//拿到@前面的
echo strstr($a,'@',true),'<br>';
$str = 'this is a test';
echo strpos($str,'is'),'<br>';
echo strpos($str,'is',3),'<br>';
echo strpos($str,'a'),'<hr>';