php字符串函数

2019-06-17  本文已影响0人  咸鱼前端

字符串函数

image.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字符串,源码中看到是&gt或者&lt这样的东西
  $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>";
上一篇 下一篇

猜你喜欢

热点阅读