PHP8的字符串操作1-PHP8知识详解

news2025/1/10 23:45:58

字符串是php中最重要的数据之一,字符串的操作在PHP编程占有重要的地位。在使用PHP语言开发web项目的过程中,为了实现某些功能,经常需要对某些字符串进行特殊的处理,比如字符串的格式化、字符串的连接与分割、字符串的比较、查找等一系列操作。用户和系统的交互也基本上是用文字来进行的,因此系统对文本信息,即字符串的处理非常重要。

PHP8 中提供了大量用来处理字符串的内置函数,使用这些内置函数,可以在 PHP8 程序中很方便地完成对字符串的各种操作。在本文中,我们通过具体的实例加深对字符串函数的理解。

PHP8的字符串操作

1、去除字符串首尾空格和特殊字符

空格在很多情况下是不必要的,所以经常会涉及到清除字符串的空格。比如某些程序中,出现了不必要的空格,就会大大的增加了程序出错的概率。

清理空格和特殊字符,我们用到了trim()、rtrim()和ltrim()函数。

1.1、trim()函数 

trim()函数是从字符串两边同时去除空格和特殊字符的。语法格式如下:

trim(string,charlist)

其中,string是需要检查的字符串,charlist为可选参数,用于设置需要被去除的字符。如果不设置该参数,则以下字符将被删除。

a、"\0":NULL,空值。

b、"\t":制表符。

c、"\n":换行符。

d、"\x0B":垂直制表符。

e、"\r":回车符。

f、" ":空格。

接下来,我们使用一个案例来做一个示范,代码如下:

<?php
$a = "***我们正在学习的是PHP8###";
echo "原文输出的是:" .$a;
echo "<br>"; 
$a = trim($a,"*"); //去除前面的*
$a = trim($a,"#"); //去除后面的#
echo "处理以后输出的是:" .$a;
?>

上面的代码,在PHP8中运行的结果如下:

原文输出的是:***我们正在学习的是PHP888###
处理以后输出的是:我们正在学习的是PHP888

1.2、ltrim()函数

ltrim()函数从左侧清楚字符串的空格和特殊字符。语法格式如下:

ltrim(string,charlist)

其中,string是需要检查的字符串,charlist为可选参数,用于设置需要被去除的字符。

示例代码:

<?php
$a = "***PHP8***";
echo "原文输出的是:" .$a;
echo "<br>"; 
$a = ltrim($a,"*"); //去除左侧的*
echo "处理以后输出的是:" .$a;
?>

在PHP8中运行的结果是:

原文输出的是:***PHP8***
处理以后输出的是:PHP8***

1.3、rtrim()函数

rtrim()函数从右侧清楚字符串的空格和特殊字符。语法格式如下:

rtrim(string,charlist)

其中,string是需要检查的字符串,charlist为可选参数,用于设置需要被去除的字符。

示例代码:

<?php
$a = "***PHP8***";
echo "原文输出的是:" .$a;
echo "<br>"; 
$a = rtrim($a,"*"); //去除左侧的*
echo "处理以后输出的是:" .$a;
?>

在PHP8中运行的结果是:

原文输出的是:***PHP8***
处理以后输出的是:***PHP8

2、获取字符串的长度

在PHP8中,计算字符串长度的函数有:strlen()和mb_strlen()。当字符串全部是英文的时候,strlen()和mb_strlen()是一样的。当字符串里面包含中文字符时二者就不一样了,当有中文的时候就使用mb_strlen()的才行。strlen()就统计不准确了。

说到中文字符,我们就来先说明一下,各种类型的字符串所占用的字节。

数字、英文、小数点、下划线和空格占一个字节。

一个汉字占2-4字节,具体占几个字节,根据使用什么编码决定的。汉字在GBK/GB2312编码中占2个字节,在UTF-8/Unicode中一般占3个字节(2-4字节也有)。一个中文的标点符号,也是两个字符。现在我们写网页的编码基本上都是国际编码UTF-8。

接下来使用strlen()函数和mb_strlen()函数获取字符串的长度。

2.1、strlen()函数

strlen()函数主要用于获取字符串的长度,语法如下:

strlen($str)

其中,str就是需要计算长度的字符串。还有一个就是返回值,如果成功返回字符串str的长度,如果str为空,则返回0.

示例:

<?php
$a = "你好,世界";
$b = "hello world";
$c = "HELLO WORLD";
echo "字符串a的长度为:".strlen($a);
echo "<br>"; 
echo "字符串b的长度为:".strlen($b);
echo "<br>"; 
echo "字符串c的长度为:".strlen($c);
?>

以上代码在PHP8中,运行的结果为:

字符串a的长度为:15
字符串b的长度为:11
字符串c的长度为:11

以上结果可以看出,大小写是一样的,但是中文的输出你们觉得对吗?

如果说输出的是字节的大小,那还算是对的,但是如果是字符串的长度,那肯定是不对的。

接下来就学习使用mb_strlen()函数来统计带中文的字符串。

2.2、mb_strlen()函数

mb_strlen()函数用于统计带中文字符串的长度,mb_strlen()函数语法格式如下:

mb_strlen($str,$encoding)

其中,str:就是计算长度的字符串。

encoding:就是字符串编码。如果省略,则使用内部字符编码。

返回值:返回具有encoding编码的字符串包含的字符数。多字节的字符被记为1.如果给定的encoding无效则返回FALSE。

mb_strlen()函数和strlen()函数用法上面大体一致,多了一个字符编码的可选参数而已。

示例代码:

<?php
$a = "你好,世界";
$b = "hello world";
$c = "HELLO WORLD";
echo "字符串a的长度为:".mb_strlen($a);
echo "<br>"; 
echo "字符串b的长度为:".mb_strlen($b);
echo "<br>"; 
echo "字符串c的长度为:".mb_strlen($c);
?>

以上代码在PHP8中的运行结果为:

字符串a的长度为:5
字符串b的长度为:11
字符串c的长度为:11

字符串的操作的内容太多了,多分一天来写了。明天继续写后面的字符串的操作。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/873019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis设置database 不生效剖析

设置database 不生效剖析 前言配置加载类问题commons-pool 对象池 主页传送门&#xff1a;&#x1f4c0; 传送 前言 事情是这样的 今天在拉取了同事的代码做redis缓存设置的时候&#xff0c;发现即使已经设置了database, 但是存数据的时候还是用的默认0数据库。这引起了我的好…

Java-类型和变量(基于C语言的补充)

一个简单的Java程序 args){ System.out.println("Hello,world"); } }通过上述代码&#xff0c;我们可以看到一个完整的Java程序的结构&#xff0c;Java程序的结构由如下三个部分组成&#xff1a; 1.源文件&#xff08;扩展名为*.java)&#xff1a;源文件带有类的定义…

通过金字塔模型拥抱企业数字化转型

企业要实施成功的数字化营销转型改革&#xff0c;需要践行如下金字塔模型&#xff0c;从上至下依次是认知&#xff0c;应用&#xff0c;流程和组织&#xff0c;我们一一来拆解。 01 认知层 处于最顶层的是认知层&#xff0c;数字化营销的认知没有建立&#xff0c;很难实施彻头…

用python来爬取某鱼的商品信息(2/2)

目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭&#xff08;可选&#xff09; 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie&#xff08;出错&#xff09; 导入cookie&#xff08;修改后&…

阿里云云主机_ECS云服务器_轻量_GPU_虚拟主机详解

阿里云云主机分为云虚拟主机、云服务器ECS、轻量应用服务器、GPU云服务器、弹性裸金属服务器、专有宿主机、FPGA云服务器、高性能计算E-HPC、无影云电脑等&#xff0c;阿里云百科来详细说下阿里云云主机详解&#xff1a; 目录 阿里云云主机 云服务器ECS 轻量应用服务器 云…

vitis如何更新xsa?

在zynq调试时&#xff0c;经常需要更新xsa文件&#xff0c;更新步骤如下&#xff1a; 在platform_project选择Update Hardware Specation 选择对应的xsa文件 提示更新完成 复位BSP 把platform_project clean一下&#xff0c;然后重新build 再refresh application project&…

项目实战 — 消息队列(9){编写demo程序}

消息队列服务器核心功能就是&#xff0c;提供了虚拟主机&#xff0c;交换机&#xff0c; 队列&#xff0c;消息等概念的管理&#xff0c;实现三种典型的消息转发方式&#xff0c;可以实现跨主机/服务器之间的生产者消费模型。 这里&#xff0c;就编写一个demo&#xff0c;实现…

动动小手搭建私人大模型人工智能私人助理

引言&#xff1a; 去年12月OpenAI公司的ChatGPT3.5彻底引爆人工智能圈&#xff0c;今年国内大公司争相进入大模型的赛道&#xff0c;打造自己的大模型。前些日子的世界人工智能大会上&#xff0c;可谓是百模大战&#xff0c;热闹纷呈。 ChatGPT的出现&#xff0c;的确给人们带…

(2)linux虚拟机配置中文输入法和如何下载软件

&#xff08;一&#xff09;配置中文输入法&#xff1a; 1、sudo apt-get install fcitx&#xff0c;安装fcitx框架&#xff0c;安装完成之后&#xff0c;选择该框架 2、接下来输入sudo apt-get install fcitx fcitx-googlepinyin&#xff0c;安装谷歌输入法之后&#xff0c;重…

[LitCTF 2023]1zjs

这里一点想法没有看看源代码 查找flag没有发现 查找.php 有所发现 看起来是一种加密方式&#xff0c;查找 jsfuck NSSCTF{bd1[]f7[]3[]c8[]-9[]c5[]c-4[]c6[]4[]-a7[]2[]7[]-6[]7[]3[]b4[]4[]2[]6[]efbc}

Programming abstractions in C阅读笔记:p107-p110

《Programming Abstractions In C》学习第46天&#xff0c;p107-p110&#xff0c;3.1小节——“The concept of interface”&#xff0c;总结如下&#xff1a; 一、技术总结 1.client p108&#xff0c;调用library的program称为client。 2.interface p108&#xff0c;“To do …

nbcio-boot升级到3.1后出现online表单新增报错

nbcio-boot升级springboot、mybatis-plus和JSQLParser后出现新增online表单的时候报错&#xff0c;如下&#xff1a; 2023-08-13 21:18:01.292 [http-nio-8080-exec-12] [1;31mERROR[0;39m [36mo.jeecg.common.exception.JeecgBootExceptionHandler:69[0;39m - Handler dispat…

MEC | 条款3 绝对不要以多态(polymorphically)方式处理数组

条款3 绝对不要以多态&#xff08;polymorphically&#xff09;方式处理数组 文章目录 条款3 绝对不要以多态&#xff08;polymorphically&#xff09;方式处理数组继承Example 打印基类-派生类数组传入BalencedBST 数组到函数 删除基类-派生类数组>>>>> 欢迎关…

8.1.tensorRT高级(3)封装系列-模型编译过程封装,简化模型编译代码

目录 前言1. 模型编译过程封装2. 问答环节总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-模型编译过程封装…

详细讲解如何在github上编辑个人主页?

在 GitHub 上编辑个人主页可以让您展示您的项目、技能和个人信息&#xff0c;以及与其他开发者互动。以下是详细的步骤来在 GitHub 上编辑个人主页&#xff1a; 创建 GitHub 账户 如果您还没有 GitHub 账户&#xff0c;首先需要注册一个。 登录到 GitHub 使用您的用户名和密…

StringBuilder的基本操作

1、为什么要学习StringBuilder? 1.1、String拼接100万次 String对象做字符串拼接&#xff0c;字符串直接拼接100万次&#xff0c;运行速度非常非常的慢&#xff0c;当数据量比较大的时候&#xff0c;一般不用字符串直接拼接 package stringdemo;public class StringTest {publ…

数据结构:选择排序

简单选择排序 选择排序是一种简单直观的排序算法。首先在未排序序列中找到最大&#xff08;最小&#xff09;的元素&#xff0c;存放到排序学列的其实位置&#xff0c;然后在剩余的未排序的元素中寻找最小&#xff08;最大&#xff09;元素&#xff0c;存放在已排序序列的后面…

9.利用matlab完成 泰勒级数展开 和 符号表达式傅里叶变换和反变换 (matlab程序)

1.简述 matlab之傅里叶变换和逆变换 首先生成一个方波&#xff08;或者其他组合波形&#xff09;&#xff0c;然后对这个信号做傅里叶变换&#xff0c;拆解到频域&#xff0c;可以看到这个信号是由哪些频率的信号叠加而来。 然后把频域信号&#xff0c;用傅里叶逆变换恢复到时…

Grafana Prometheus 通过JMX监控kafka 【2023最新方式】

第三方kafka exporter方案 目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter&#xff0c;他的原理大概就是启动一个kafka客户端&#xff0c;获取kafka服务器的信息&#xff0c;然后提供一些metric接口供Prometheus使用&#xff0c;随意它…

编写守护进程

守护进程是一个后台进程&#xff0c;当操作系统启动时就可以运行的进程&#xff0c;当操作系统结束时结束的进程&#xff0c;与终端无关。 结果 不想要了就杀死