字符串的处理和分析在任何编程语言中都是一个重要的基础,往往是简单而重要的。信息的分类、解析、存储和显示,以及网络中的数据都需要操作字符串来完成。尤其在web开发中更为重要,程序员大部分工作都是在操作字符串,本文将详细介绍php中的字符串函数

[注意]关于javascript中字符串的属性和方法移步至此

特点

因为php是弱类型语言,所以其他类型的数据一般都可以直接应用于字符串操作函数中,而自己转换成字符串类型进行处理echo substr( "1234567", 2, 4 );  //将字串用函数substr()处理,输出子字符串 345echo substr( 123456, 2, 4 );     //将整型用字串函数处理,输出同样是字符串 345echo hello;           //先找hello常量,找不到就会将常名看作是字符串使用

字符串貌似数组,可以使用中括号语法,但由于无法与真正的数组进行区别,带来二义性,所以最好使用功能相同的花括号$str = "lamp";

echo $str."
";

echo $str{0};//输出字符串$str中第一个字符lecho $str[1];//输出字符串$str中第二个字符a,[]也可以,不过已过时

在处理变量解析时,如果在字符串中遇到美元符号,解析器会尽可能多地取得后面的字符以组成一个合法的变量名,如果想明确指定名字的结束,用花括号把变量名括起来

$lamp = array('os'=>'Linux');

//可以解析

echo "A OS is $lamp[os].";

//不能解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错

echo "A OS is $lamp['os'].";

//可以解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错

echo "A OS is {$lamp['os']}.";

//可以解析,注意PHP将数组下标看作常量名,常量不存在时将常量名称转为字符串,效率低

echo "A OS is {$lamp[os]}.";

[注意]在php中,一个GB2312编码的汉字占2个字节,一个UTF-8编码的汉字占3个字节

输出

echo()void echo ( string $arg1 [, string $... ] )

echo()函数用来输出一个或多个字符串,它会输出所有参数,且不会换行,没有返回值

echo不是一个函数, 因此不一定要使用小括号来指明参数,单引号,双引号都可以。另外,如果想给echo 传递多个参数,就不能使用小括号

<?phpecho  "Hello World";$foo = "foobar";echo "foo is $foo"; // foo is foobarecho $foo;          // foobar?>

print()int print ( string $arg )

print()函数用来输出字符串,且总是返回 1

<?phpprint ("Hello World");$foo = "foobar";print "foo is $foo"; // foo is foobarprint $foo;          // foobar?>

var_dump(echo('123'));//报错var_dump(print('123'));//int 1

echo可以接受多个参数(不可以加括号),而print不可以<?phpecho  '1','2','3';//123print 'a','b','c';//报错?>

exit()

exit()函数用来输出一个消息并且退出当前脚本,没有返回值,同名函数为die()void exit ([ string $status ] )

void exit ( int $status )

如果 status 是一个字符串,在退出之前该函数会打印status;如果 status 是一个 integer,该值会作为退出状态码,并且不会被打印输出。退出状态码应该在范围0至254,不应使用被PHP保留的退出状态码255。 状态码0用于成功中止程序<?phpexit ('0');//0exit(0);//无返回值?>

printf

printf()函数用于输出格式化字符串int printf ( string $format [, mixed $args [, mixed $... ]] )

sprintf

sprintf()函数用于把格式化的字符串写入一个变量中string sprintf ( string $format [, mixed $args [, mixed $... ]] )

字符串转换格式如下

%%    返回百分比符号%b    二进制数%c    依照ASCII值的字符%d    带符号十进制数%e    科学计数法(如1.5e3)%u    无符号十进制数%f或%F     浮点数%o        八进制数%s        字符串%x或%X    十六进制数

<?php $var = 10;printf("%%,%b,%c,%d,%e,%u,%o,%f,%s,%x",$var,$var,$var,$var,$var,$var,$var,$var,$var,$var);//%,1010, ,10,1.000000e+1,10,12,10.000000,10,a$result = sprintf("%%,%b,%c,%d,%e,%u,%o,%f,%s,%x",$var,$var,$var,$var,$var,$var,$var,$var,$var,$var);var_dump($result);//string '%,1010, ,10,1.000000e+1,10,12,10.000000,10,a' (length=44)?>

上面的两个函数不仅可以设置转换类型,还可以设置精确度、填充符和对齐方式%%.%#    在结果前面填充#号

%-   左对齐printf("%'#10.3f",123);//###123.000printf("%10.3f",123);// 123.000(右对齐)printf("%-10.3f",123);//123.000   (左对齐)

空格

trim()

trim()函数用于去除字符串首尾处的空白字符(或者其他字符),过滤后的字符串string trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )

此函数返回字符串str去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符:

" " (ASCII 32 (0x20)),普通空格符"\t" (ASCII 9 (0x09)),制表符"\n" (ASCII 10 (0x0A)),换行符"\r" (ASCII 13 (0x0D)),回车符"\0" (ASCII 0 (0x00)),空字节符"\x0B" (ASCII 11 (0x0B)),垂直制表符

charlist为可选参数,过滤字符也可由charlist参数指定。一般要列出所有希望过滤的字符,也可以使用 “..” 列出一个字符范围

ltrim()

ltrim函数用于删除字符串开头的空白字符(或其他字符)

rtrim()

rtrim函数用于删除字符串末端的空白字符(或者其他字符)

<?php $text  = "   \t\tHello World a1a1a1    ";$trimmed = trim($text);var_dump($trimmed);//string 'Hello World a1a1a1' (length=18)$trimmed = trim($text, "a1 ");var_dump($trimmed);//string '        Hello World' (length=13)$trimmed = trim($text, "1..e ");//string '        Hello Worl' (length=12)var_dump($trimmed);$ltrimmed = ltrim($text);var_dump($ltrimmed);//string 'Hello World a1a1a1    ' (length=22)$rtrimmed = rtrim($text);var_dump($rtrimmed);//string '           Hello World a1a1a1' (length=23)?>

str_pad()

str_pad()函数使用另一个字符串填充字符串为指定长度string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

该函数返回input被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 pad_string 参数没有被指定,input 将被空格字符填充,否则它将被 pad_string 填充到指定长度

[注意]如果pad_length的值是负数,小于或者等于输入字符串的长度,不会发生任何填充

<?php $input = "Alien";echo str_pad($input, 10); // 输出 "Alien     "echo str_pad($input, 10, "-=", STR_PAD_LEFT); // 输出 "-=-=-Alien"echo str_pad($input, 10, "_", STR_PAD_BOTH); // 输出 "__Alien___"echo str_pad($input, 6 , "___");// 输出 "Alien_"?>

大小写

strtolower()

strtolower — 将字符串转化为小写

strtoupper()

strtoupper — 将字符串转化为大写

ucfirst()

ucfirst — 将字符串的首字母转换为大写

ucwords()

ucwords — 将字符串中每个单词的首字母转换为大写

<?php $foo = 'hello world!';var_dump(ucwords($foo));//string 'Hello World!' (length=12)var_dump(ucfirst($foo));//string 'Hello world!' (length=12)var_dump(strtoupper($foo));//string 'HELLO WORLD!' (length=12)var_dump(strtolower($foo));//string 'hello world!' (length=12)?>

HTML

nl2br()

nl2br — 在字符串所有新行之前插入 HTML 换行标记string nl2br ( string $string [, bool $is_xhtml = true ] )

<?php /*foo isn't

bar */echo nl2br("foo isn't\n bar");?>

htmlspecialchars()string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

htmlspecialchars - 把指定特殊符号转换成实体& (ampersand)            &" (double quote)        ", unless ENT_NOQUOTES is set

' (single quote)        ' or '

> (greater than)        >

<?php $new ="");echo $new; //显示字符串""?>

<?php     $str = "WebServer: & 'Linux' & 'Apache'";//常有HTML标记和单引号的字符串

echo htmlspecialchars($str, ENT_COMPAT);//转换HTML标记和转换双引号

echo "
\n";    echo htmlspecialchars($str, ENT_QUOTES);//转换HTML标记和转换两种引号

echo "
\n";    echo htmlspecialchars($str, ENT_NOQUOTES);//转换HTML标记和不对引号转换?>

htmlentities()string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

htmlentities - 将所有的非ASCII码转换成对应实体代码

htmlentities()和htmlspecialchars()的功能都是转换字符为HTML字符编码,特别是url和代码字符串,防止字符标记被浏览器执行。htmlentities转换所有的html标记,htmlspecialchars只格式化& ' " < 和 > 这几个特殊符号

<?php $str = "

123

";echo $str;//显示段落123echo htmlentities($str);//'123'echo htmlspecialchars($str);//'123'?>

strip_tags()

strip_tags — 尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果string strip_tags ( string $str [, string $allowable_tags ] )

使用可选的第二个参数allowable_tags指定不被去除的字符列表

<?php $text = '

Test paragraph.

Other text';echo strip_tags($text);//'Test paragraph. Other text'echo "\n";echo strip_tags($text, '

').'
';//

Test paragraph.

Other text$text = '

123

';echo strip_tags($text);//'123'?>

addslashes()

addslashes — 使用反斜线引用字符串,返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)string addslashes ( string $str )<?php $str = "Is your name O'reilly?";echo addslashes($str);// "Is your name O\'reilly?"?>

stripslashes()

stripslashes — 反引用一个引用字符串string stripslashes ( string $str )<?php $str = "Is your name O\'reilly?";echo stripslashes($str);//"Is your name O'reilly?"?>

格式化

strrev()

strrev — 反转字符串string strrev ( string $string )<?phpecho  strrev("Hello world!"); // 输出 "!dlrow olleH"?>

strlen()

strlen — 获取字符串长度int strlen ( string $string )

<?php $str = 'abcdef';echo strlen($str); // 6$str = ' ab cd ';echo strlen($str); // 7?>

md5()

md5 — 计算字符串的 MD5 散列值string md5 ( string $str [, bool $raw_output = false ] )

如果可选的raw_output被设置为TRUE,那么MD5报文摘要将以16字节长度的原始二进制格式返回

<?php $str = 'apple';if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {    echo "Would you like a green or red apple?";

}?>

比较

strcmp()

strcmp — 字符串比较,如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0int strcmp ( string $str1 , string $str2 )

<?php $var1 = "Hello";$var2 = "hello";if (strcmp($var1, $var2) !== 0) {    echo '$var1 is not equal to $var2 in a case sensitive string comparison';

}?>

strncmp()

strncmp — 限定字符串长度的字符串比较int strncmp ( string $str1 , string $str2 , int $len )

如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0<?php

echo strncmp("xybc","a3234",0); // 0 echo strncmp("xybc","a3234",1); // 1 ?>

strcasecmp()

strcasecmp — 字符串比较(不区分大小写),如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0int strcasecmp ( string $str1 , string $str2 )

<?php $var1 = "Hello";$var2 = "hello";if (strcasecmp($var1, $var2) == 0) {    echo '$var1 is equal to $var2 in a case-insensitive string comparison';

}?>

strnatcmp()

strnatcmp — 使用自然排序算法比较字符串int strnatcmp ( string $str1 , string $str2 )

如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

<?php $arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");usort($arr1, "strcmp");print_r($arr1);//Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png )usort($arr2, "strnatcmp");//Array ( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png )print_r($arr2);?>

位置

strstr()

strstr()查找字符串的首次出现,返回haystack字符串从needle第一次出现的位置开始到haystack结尾的字符串string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

before_needle若为TRUE,strstr()将返回needle在haystack中的位置之前的部分

<?php

$email  = 'name@example.com';

$domain = strstr($email, '@');

echo $domain; // @example.com$user = strstr($email, '@', true);

echo $user; //name?>

strpos()

strpos()查找字符串首次出现的位置mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )<?php // 忽视位置偏移量之前的字符进行查找$newstring = 'abcdef abcdef';

$pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0?>

strrpos()

strrpos()计算指定字符串在目标字符串中最后一次出现的位置int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

<?php

$foo = "0123456789a123456789b123456789c";

var_dump(strrpos($foo, '7', -5));  // 从尾部第 5 个位置开始查找                                   // 结果: int(17)var_dump(strrpos($foo, '7', 20));  // 从第 20 个位置开始查找                                   // 结果: int(27)var_dump(strrpos($foo, '7', 28));  // 结果: bool(false)?>

子串

substr()

substr()返回字符串的子串string substr ( string $string , int $start [, int $length ] )

<?php

$rest = substr("abcdef", -1);    // 返回 "f"$rest = substr("abcdef", -2);    // 返回 "ef"$rest = substr("abcdef", -3, 1); // 返回 "d"?>

$rest = substr("abcdef", 0, -1);  // 返回 "abcde"$rest = substr("abcdef", 2, -1);  // 返回 "cde"$rest = substr("abcdef", 4, -4);  // 返回 ""$rest = substr("abcdef", -3, -1); // 返回 "de"?>

替换

str_replace()

str_replace()返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

如果count被指定,它的值将被设置为替换发生的次数

<?php // 赋值:

$bodytag = str_replace("%body%", "black", "");// 赋值: Hll Wrld f PHP$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");

$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");// 赋值: You should eat pizza, beer, and ice cream every day$phrase  = "You should eat fruits, vegetables, and fiber every day.";

$healthy = array("fruits", "vegetables", "fiber");

$yummy   = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);// 赋值: 2$str = str_replace("ll", "", "good golly miss molly!", $count);

echo $count;?>

分割

【explode()】

explode()使用一个字符串分割另一个字符串,返回由字符串组成的数组,每个元素都是string的一个子串,它们被字符串delimiter作为边界点分割出来array explode ( string $delimiter , string $string [, int $limit ] )

如果设置了limit参数并且是正数,则返回的数组包含最多limit个元素,而最后那个元素将包含string的剩余部分;如果limit参数是负数,则返回除了最后的-limit个元素外的所有元素;如果limit是0,则会被当做1

<?php // 示例 1$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";

$pieces = explode(" ", $pizza);

echo $pieces[0]; // piece1echo $pieces[1]; // piece2// 示例 2$data = "foo:*:1023:1000::/home/foo:/bin/sh";

list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);

echo $user; // fooecho $pass; // *?>

【implode()】

implode()将一个一维数组的值转化为字符串string implode ( string $glue , array $pieces )string implode ( array $pieces )

<?php

$array = array('lastname', 'email', 'phone');

$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone// Empty string when using an empty array:var_dump(implode('hello', array())); // string(0) ""?>

php trip_tags,PHP之字符串函数相关推荐

  1. MySQL 学习笔记(3)— 字符串函数、数值函数、日期时间函数、流程函数、聚集函数以及分组数据

    1. 字符串函数 MySQL 的常用函数包括字符串函数.数值函数.日期时间函数.流程函数等. SELECT ascii("abc"),char(97),concat("h ...

  2. c语言中存储字符用什么函数,那些C语言中你不知道的字符串函数(坑)

    1.strcpy() 在字符串拷贝函数中,它的函数编写不难,如下 char* Strcpy(char* dest, const char* src) { assert(dest != NULL &am ...

  3. c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  4. 模拟实现常用字符串函数

    1.查找子字符串函数strstr的实现char * my_strstr(const char * dest, const char * src)//const保护字符串不被更改 {assert(des ...

  5. PHP替换字符串函数strtr()和str_replace()

    strtr(string,from,to): 逐个字符开始替换,以from跟to中长度较较短的一个为准,例如: strtr("aidenliu","ai",&q ...

  6. [SqlServer]数据库中自定义拆分字符串函数Split()

     经常我们要用到批量操作时都会用到字符串的拆分,郁闷的是SQL Server中却没有自带Split函数,所以我们只能自己动手来解决一下.为了减少和数据库的通讯次数,我们都会利用这种方法来实现批量操作. ...

  7. (基础篇)PHP字符串函数

    1查找字符位置函数:   strpos($str,search,[int]):查找search在$str中的第一次位置从int开始: stripos($str,search,[int]):函数返回字符 ...

  8. 字符串函数用法 php,PHP字符串函数print()的用法

    print (PHP 4, PHP 5) print - 输出字符串 说明 int print ( string $arg ) 输出 arg. print 实际上不是一个函数(它是一个语言结构),因此 ...

  9. php字符串加密解密源码,PHP中加密解密字符串函数源代码

    PHP中加密解密字符串函数源代码: /** *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ / ...

最新文章

  1. F5负载均衡配置手册-实操后的
  2. 人工操作阶段计算机是如何工作的,第一章计算机基础概述全解.ppt
  3. python计算一元一次方程的根_5-2 一元二次方程
  4. Go的结构体对接受者函数的传递
  5. itext根据数据生成PDF
  6. 输入设备名输入输出设备的重定向
  7. html结构及部分属性——从0开始
  8. Android三级目录、ListView单选/GridView单选、ListView多选/GridView多选
  9. stm32cubeide 汉化包_经过两天瞎折腾,分享下STM32CUBE IDE的用法
  10. oracle 2703,Oracle11gR2光钎链路切换crs服务发生crash
  11. ThinkPad安装ALPS驱动后任然关闭触摸板失败的解决方法
  12. MATLAB app designer GUI设计
  13. 搜狐公司副总裁 方刚 先生谈《胜于言传——网站内容制胜宝典》
  14. 2023年江苏专转本志愿填报辅导(22上岸南工程学长辅导手册)
  15. 解决 av_read_frame() 文件尾(end of file)
  16. Android 抛弃原生WebView,使用腾讯X5内核、并加入广告拦截。
  17. 微型计算机数值,微型计算机中存储数据的最小单位是( )
  18. 数据结构 图定义和实现查询最短路径
  19. ubuntu22安装和卸载nvidia驱动
  20. Make NFTs with On-Chain Metadata 包有问题

热门文章

  1. 谣言检测文献阅读十二—Interpretable Rumor Detection in Microblogs by Attending to User Interactions
  2. H264(NAL简介与I帧判断) 扩展H265
  3. 这是一份电商运营求职指南
  4. 从图像处理到语音识别,25款数据科学家必知的深度学习开放数据集
  5. 微信小程序连接自搭建emq(emqx)的MQTT服务器
  6. 一个总经理的11个经典面试问题
  7. SpringCloud Alibaba 学习
  8. 如何修改PDF中的图片上的文字?
  9. 连续字母长度 给定一个字符串 只包含大写字母
  10. A_Star 康托展开 八数码问题