关于字符串的处理,基本上就是那几种操作:字符串长度、查找子字符串的位置、替换字符串、截取字符串、拆分合并字符串 ...

字符串的定义:直接 $str = "abcd"; 或者 $str = 'xyzi';

其中双引号和单引号的区别在于:双引号能够转义一些特殊字符,如\n 、\t 、$。因为能够转义$符,故能够将双引号中的变量转换。

一般情况下推荐使用单引号,因为它的解析速度稍快。

字符串长度

strlen($str); //返回当前编码下字符串的长度,默认是ISO-8859-1编码

如: $a = 'abc';

echo strlen($a); //3

$a = '中国';

echo strlen($a); //如果文件保存编码是UTF-8的话,则输出6,因为在UTF-8编码下,一个中文占3个字节;同理在gb2312编码下,则输出4

mb_strlen($str,charset); //返回指定编码下的字符串的长度

$a = '中国';

echo mb_strlen($a,'UTF-8'); //输出2

echo mb_strlen($a,'gb2312'); //输出4 //如果文件保存编码是gb2312,那么长度就是2

查找子字符串的位置

strpos(str1,str2); //查找字符串str2在str1中首次出现的位置,相当于indexOf()

如:

$str1 = 'liuchuanwei';
$str2 = 'an';
echo strpos($str1,$str2); //输出6

此外strpos还有一个参数offset,表示从offset位置开始查找

strpos($str, $str2, strpos($str1, $str2)+1); 表示$str2在$str1中出现的第二次位置

在php中经常存在这样的判断语句

if(strpos($str1,$str2) !== false){
     echo '含有' . $str2 . '<br/>';
}else{
     echo '不含有' . $str2 . '<br/>';
}

此处一定要用全不等于或者全等于,因为strpos()有可能返回位置0和出现错误而返回false,而0==false,但0!==false
全等于和等于的区别:全等于是指类型和值都等于
另外:如果想要查找在字符串中的最后出现的位置,使用 strrpos()函数是一个好主意,它的用法和strpos()完全相同而且他们都区分大小写,区别在于它返回的是字符串出现的最后一个位置。

替换字符串
str_replace($str1,$str2,$str0); //主前客后家末尾
将字符串$str0中的子字符串$str1替换为$str2

同时替换一批字符串
$str = '男人,女人,男孩,女孩';
//将字符串中的 '男' 转换成 '女' ,将 '女' 转换成 '男'
用str_replace就不大好实现了

strtr($str,$from,$to); //将字符串$str中的$from转换成$to
strtr的牛逼之处在于,strtr还支持数组参数,即用数组参数替代$from和$to
用 $from => $to 这样的格式数组替换$from和$to两个参数,从而实现整批整批的替换
如:
$arr = array('男'=>'女','女'=>'男');
echo strtr($str,$arr);

截取字符串
substr($str,start[,length]); //从start处截取length长度的$str的子字符串

拆分合并字符串
$str = 'tech,linux,mysql';
explode(',',$str);
将字符串以 , 逗号为分隔符拆分,返回数组

implode($arr,",");
将数组以 , 逗号为分隔符组成字符串

【php学习】字符串操作的更多相关文章

  1. PHP基础学习----字符串操作

    1.单引号和双引号的区别 在php中,字符串的定义可以使用英文单引号'',也可以使用英文双引号“”: <?php $str = 'hello'; echo "str is $str&q ...

  2. Python学习---字符串操作

    ### 截取字符串然后拼接 str = "Hello World!" str2 = str[:6] + "tyche !" print(str2) ===> ...

  3. 【php学习之路】字符串操作

           无论学习那种语言,字符串操作都是必备的基础.学php的时候总是会不知不觉的与C#比较,用起来总觉得怪怪的没有那么顺手,有些命名也差别很大,再加上很多函数命名是简写形式不百度下还真不知道什 ...

  4. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  5. 实验楼Python学习记录_挑战字符串操作

    自我学习记录 Python3 挑战实验 -- 字符串操作 目标 在/home/shiyanlou/Code创建一个 名为 FindDigits.py 的Python 脚本,请读取一串字符串并且把其中所 ...

  6. matlab学习笔记10_5 通用字符串操作和比较函数

    一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...

  7. VC++ 字符串操作学习总结

    vc++中各种字符串(转载) http://www.cnblogs.com/tomin/archive/2008/12/28/1364097.html CString ,BSTR ,LPCTSTR之间 ...

  8. 零基础学习C语言字符串操作总结大全

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, ...

  9. python学习笔记(字符串操作、字典操作、三级菜单实例)

    字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...

  10. java入门学习笔记之2(Java中的字符串操作)

    因为对Python很熟悉,看着Java的各种字符串操作就不自觉的代入Python的实现方法上,于是就将Java实现方式与Python实现方式都写下来了. 先说一下总结,Java的字符串类String本 ...

随机推荐

  1. HDU 4972 Bisharp and Charizard 想法题

    Bisharp and Charizard Time Limit: 1 Sec  Memory Limit: 256 MB Description Dragon is watching NBA. He ...

  2. 【vijos1659】河蟹王国 线段树<区间修改+区间最大值>

    描述 河蟹王国有一位河蟹国王,他的名字叫羊驼.河蟹王国富饶安定,人们和谐相处.有一天,羊驼国王心血来潮,想在一部分人中挑出最和谐的人.于是,羊驼国王将他的子民排成了一列(==!!b汗~好长呀).每个人 ...

  3. PHP实用的功能函数

    /** * 获取类/对象的方法列表 *@param unknown $argument 类/对象 *@param array|string $filter 过滤 *@return array 类似:[ ...

  4. 电赛总结(二)——AD芯片总结之AD7705

    1.特性参数 (1)16位无丢失代码性AD转化器 (2)只需要3.3V供电(即只需要单片机即可供电) (3)双通道差分输入 (4)基准电压为2.5V时,在单极性信号下,输入范围是0到2.5V,在双极性 ...

  5. HttpURL

    * 步骤:     1. new一个URL对象     2. new一个HttpURLConnection对象     3. connection连接     4. getResponseCode() ...

  6. Oracle TNS配置浅析

    1. 什么是TNS? TNS是Oracle Net的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,必须配置TNS,当然在少数情况下,不用配置T ...

  7. Revit二次开发示例:DisableCommand

    Revit API 不支持调用Revit内部命令,但可以用RevitCommandId重写它们(包含任意选项卡,菜单和右键命令).使用RevitCommandId.LookupCommandId()可 ...

  8. C#中 As 和强制转换的总结

    1.1.1 摘要 C#是一门强类型语言,一般情况下,我们最好避免将一个类型强制转换为其他类型,但有些时候难免要进行类型转换. 先想想究竟哪些操作可以进行类型转换(先不考虑.NET提供的Parse),一 ...

  9. extjs 选项卡

    yufenghou extjs 选项卡 <%@ page language="java" import="java.util.*" pageEncodin ...

  10. 学习了ZKW费用流

    所谓ZKW费用流,其实就是Dinic. 若干年前有一个人发明了最小增广路算法,每次用BFS找一条增广路,时间O(nm^2) 然后被DinicD飞了:我们为什么不可以在长度不变时多路增广呢?时间O(n^ ...