php字符串函数
2019-06-17 本文已影响0人
咸鱼前端
字符串函数
![](https://img.haomeiwen.com/i15543503/8d44a521acf1f3b3.png)
<?php
header("content-type:text/html,charset=utf8");
$str = "hello lzq";
// 检测是否是字符串
var_dump(is_string($str));
echo "<br>";
// 得到字符串的长度
echo "字符串的长度为:" . strlen($str);
echo "<br>";
//字符串查找的内置函数方法
function strSearch()
{
// 在指定字符串中查找目标字符串第一次出现的位置
$username = "LzQ iS hanDSOme";
$findme = "lzq";
$result = strpos(strtolower($username), $findme);
if ($result === false) { // 如果用 == 则这里会为true 执行的是查找不到的指令,所以这里要用 === ,因为查找的位置是0
echo "字符串'$findme'在字符串'$username'中找不到";
} else {
echo "字符串'$findme'在字符串'$username'中找到";
echo "它的位置是'$result'";
}
echo "<br>";
// 忽略大小写的查找
$findme = "Lzq";
$result = stripos($username, $findme);
echo $result; // 0
echo "<br>";
// 在指定字符串中查找目标字符串最后出现的位置
$findme = 'lzq';
$username = "lzq is handsome, is it? lzq";
$result = strrpos(strtolower($username), $findme);
echo $result; // 24,查找到的后面一个lzq
echo "<br>";
// 忽略大小写的去查找目标字符串在字符串中最后出现的位置
$findme = 'lzq';
$username = "lzQ is handsome, is it? LZQ";
$result = strripos(strtolower($username), $findme);
echo $result; // 24,查找到的后面一个lzq
echo "<br>";
// 查找字符串的首次出现,返回的是第一次出现位置到结尾的字符串
$email = "751468644@qq.com";
$match = "@";
$result = strstr($email, $match); //@qq.com
$weizhi = strripos($result, ".");
echo $weizhi . "<br>"; //3
echo substr($result, 1, ($weizhi - 1)); //字符串截取从1开始截取到查询到 "." 位置的前一个位置
echo "<br>";
// 查找字符串的首次出现,返回的是第一次出现位置到结尾的字符串(忽略大小写)
$email = "751468644@QQ.com";
$match = "qq";
$result = stristr($email, $match);
echo $result; // QQ.com
echo "<br>";
// 查找字符串的首次出现,返回的是最后出现位置到结尾的字符串(忽略大小写)
$str = "lzq good,lzq handsome";
$match = "lzq";
$result = strrchr($str, $match);
echo $result;
echo "<br>";
// 查找字符串替换
$str = "草1他妈的2垃圾3弱智4";
$filterArr = array("草", "他妈的", "她妈的", "垃圾", "弱智");
$data = str_replace($filterArr, "", $str, $count); // 在 $str 中匹配到 "草" 这个字符串替换成 ""
echo $data . "<br>"; // 1234,其他字符串全部被替换成空字符串
echo "替换字符串的次数为:" . $count . "次";
echo "<br>";
// 查找字符串替换(忽略大小写)
$str = "LZQ is handsome body";
$order = "lzq";
$replace = "李智强";
$data = str_ireplace($order, $replace, $str, $count); // 在 $str 中匹配到 "lzq" 这个字符串替换成 "李智强"
// $count是替换了的次数
echo $data . "<br>"; // 1234,其他字符串全部被替换成空字符串
echo "替换字符串的次数为:" . $count . "次" . "<br>"; //1,只替换了一次
}
echo "<h1>字符串查找的内置函数方法</h1>";
strSearch();
echo "<br>";
echo "<br>";
echo "<br>";
// 字符串大小写方法
function strChange()
{
$username = "LzQ iS hanDSOme";
// 字符串所有字母转换为小写
echo strtolower($username) . "<br>";
// 字符串所有字母转换为大写
echo strtoupper($username) . "<br>";
// 字符串首字母大写
echo ucfirst($username) . "<br>";
// 字符串所有单词首字母大写
echo ucwords($username) . "<br>";
// 字符串单词首字母小写
echo lcfirst(strtoupper($username)) . "<br>";
}
echo "<h1>字符串大小写方法</h1>";
strChange();
echo "<br>";
echo "<br>";
echo "<br>";
// 字符串截取方法
function strSlice()
{
// 截取字符串
$str = "751468644@qq.com";
$emailIndex = strpos($str, "@"); // 查询 "@" 在字符串中的位置
$pointIndex = strpos($str, "."); // 查询 "." 在字符串中的位置
$data = substr($str, ($emailIndex + 1)); // 从第三个索引值对应的字符串位置进行截取,长度不填默认为截取到结尾
$data = substr($data, 0, ($pointIndex - 1));
echo $data;
echo "<br>";
// 替换字符串的字串
$replacement = "@gmail.com";
$weizhi = strpos($str, "@");
echo substr_replace($str, "$replacement", $weizhi) . "<br />";
echo substr_replace($str, "$replacement", $weizhi, strlen($str)) . "<br />";
//substr_replace($str, "替换的文本", "开始位置", "替换长度");
}
echo "<h1>字符串截取方法</h1>";
strSlice();
echo "<br>";
echo "<br>";
echo "<br>";
// 字符串ASCII加密
function ascii()
{
$str = "a";
echo "{$str}的ASCII字符是" . ord($str);
echo "<br>";
$ascii = 97;
echo "{$ascii}的字符串是" . chr($ascii) . "<br>";
}
echo "<h1>字符串ASCII加密</h1>";
ascii();
echo "<br>";
echo "<br>";
echo "<br>";
// 字符串过滤函数
function strFilter()
{
$hello = "\n 我是你爸爸...";
// 过滤左端字符串
$str = ltrim($hello);
// 过滤右端字符串
$str2 = rtrim($hello, ".");
echo $str . "<br>";
echo $str2 . "<br>";
$message = "我是做<a href='http://www.baidu.com'>外观检测设备</a>的";
// 过滤html标记
$message = strip_tags($message);
echo $message . "<br>";
$str = "Is your name o'rocal";
echo $str . "<br>";
// 使用反斜杠引用一些特定的字符串
echo addslashes($str) . "<br>";
// 将字符转换为 HTML 转义字符,输出的结果实际就是不解析html字符串,源码中看到是>或者<这样的东西
$str = "我是<b>李智强</b>";
echo $str . "<br>";
$str2 = htmlentities($str);
echo $str2 . "<br>";
// 将特殊字符转换为 HTML 实体
echo htmlspecialchars($str2) . "<br>";
$str = "\n哈哈\n我是\n李智强";
// 将字符串中的\n转换成br
echo nl2br($str) . "<br>";
}
echo "<h1>字符串过滤函数</h1>";
strFilter();
echo "<br>";
echo "<br>";
echo "<br>";
// 字符串比较函数
function strChar()
{
$str1 = "hijklmn";
$str2 = "ABCDEFG";
echo ord($str1) . "<br>";
echo ord($str2) . "<br>";
// 二进制安全字符串比较
echo strcmp($str1, $str2) . "<br>";
// 二进制安全比较字符串(不区分大小写)
echo strcasecmp($str1, $str2) . "<br>";
// 使用自然顺序算法比较字符串
echo strnatcasecmp($str1, $str2) . "<br><br>";
$str1 = "red";
$str2 = "redent123123123";
// 比较字符串的若干个字符
// 若参数s1和s2字符串相同则返回0
// $str1长度大于$str2长度则返回不同的字符的长度值(正数)
// $str1长度若小于$str2长度则返回不同的字符的长度值(负数)
$test = strncasecmp($str1, $str2, 20);
if ($str1 == $str2) {
echo "$test";
} else {
echo "$test";
}
}
echo "<h1>字符串比较函数</h1>";
strChar();
echo "<br>";
echo "<br>";
echo "<br>";
function strMerge()
{
// 将字符串以指定的分隔符分割成数组
$arr = array();
$str = "http://www.siputaike.com";
$arr = explode(".", $str, 1); // 填写保留的长度,正数则限制数组的长度
$arr = explode(".", $str, -1); // 负数则从最后面开始删除数组的长度
var_dump($arr);
echo "<br>";
// 将数组的健值以指定的连接符连接成字符串
$arr = array("苹果" => "apple", "香蕉" => "banana");
echo implode(",", $arr) . "<br>";
// 将字符串直接转换成数组
var_dump(str_split($str, 5)); // 后面可跟一个Number指定转换的数组的长度
}
echo "<h1>字符串拆分/合并函数</h1>";
strMerge();
echo "<br>";
echo "<br>";
echo "<br>";
function strFormat()
{
/**
* %% - 返回一个百分号 %
* %b - 二进制数
* %c - ASCII 值对应的字符
* %d - 包含正负号的十进制数(负数、0、正数)
* %e - 使用小写的科学计数法(例如 1.2e+2)
* %E - 使用大写的科学计数法(例如 1.2E+2)
* %u - 不包含正负号的十进制数(大于等于 0)
* %f - 浮点数(本地设置)
* %F - 浮点数(非本地设置)
* %g - 较短的 %e 和 %f
* %G - 较短的 %E 和 %f
* %o - 八进制数
* %s - 字符串
* %x - 十六进制数(小写字母)
* %X - 十六进制数(大写字母)
*/
$user = "李智强";
$number = 9;
$str = "别墅|车|老婆|孩子";
$str = explode("|", $str);
$str = implode("、", $str);
// 直接输出格式化后的字符串
printf("%s在%s个城市拥有%s", $user, $number, $str);
echo "<br>";
// 将格式化好的字符串储存在变量中,用法基本相同
$text = sprintf("%s在%s个城市拥有%s", $user, $number, $str);
echo $text;
}
echo "<h1>字符串格式化函数</h1>";
strFormat();
echo "<br>";
echo "<br>";
echo "<br>";
function strOther()
{
$str = "abcdefg";
// 翻转字符串
echo strrev($str) . "<br>";
// 随机打乱字符串
echo str_shuffle($str) . "<br>";
// 重复字符串 重复第一个字符串输出20次
echo str_repeat("==", 20) . "<br>";
// 解析CSV字符串为一个数组
$str = "中国,广东省,广州市,天河区,'113.329884,23.154799',1,'2016-01-01 12:00:00','1,2,3,4,5,6'";
// 规定分割符是 "," 字段包裹符号为 "'" (单引号)
$arr = str_getcsv($str, ',', "'");
print_r($arr);
echo "<br>";
// 将字符串转换成多个变量
$str = "first=value&arr[]=foo+bar&arr[]=baz";
// 推荐用法
parse_str($str, $output);
var_dump($output);
echo "<br>";
echo $output["first"] . "<br>";
var_dump($output["arr"][1]);
echo "<br>";
// 由于 PHP 的变量名不能带「点」和「空格」 所以它们会被转化成下划线
parse_str("My Value=Something", $output);
echo $output["My_Value"]; // Something
}
echo "<h1>字符串其他常用函数</h1>";
strOther();
echo "<br>";
echo "<br>";
echo "<br>";