首页技术php字符串函数(php 字符串长度)

php字符串函数(php 字符串长度)

编程之家2026-06-28969次浏览

各位老铁们,大家好,今天由我来为大家分享php字符串函数,以及php 字符串长度的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

php字符串函数(php 字符串长度)

php 怎么处理字符串

大家通过对PHP的学习,可以运用这一高级语言创建一个性能较高的网站。对于初学者来说,对于PHP字符串mbstring还是比较陌生的,下面我们就来介绍一下PHP字符串mbstring的具体应用。

多国语言并存就意味着多字节,PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是1~3倍的差异了。

采用PHP字符串mbstring可以较好地解决这个问题。mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用mb_strlen($str,’UTF-8′)。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数得到,设置有两种方式:

1.在php.ini中设置mbstring.internal_encoding= UTF-8

2.调用mb_internal_encoding(”GBK”)

除了PHP字符串mbstring,还有很多切割函数,其中mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。而且从函数切割对长度的作用也不同,mb_strcut的切割条件是小于strlen, mb_substr是等于strlen,看下面的例子,

php字符串函数(php 字符串长度)

<?$str=‘我是一串比较长的中文-www.jefflei.com’; echo“mb_substr:”. mb_substr($str, 0, 6,‘utf-8′); echo”“; echo“mb_strcut:”. mb_strcut($str, 0, 6,‘utf-8′);?>

输出如下:

mb_substr:我是一串比较

mb_strcut:我是

需要注意的是,PHP字符串mbstring并不是PHP核心函数,使用前需要确保在php编译模块时加入mbstring的支持:

(1)编译时使用–enable-mbstring

php字符串函数(php 字符串长度)

(2)修改/usr/local/lib/php.inc

default_charset=“zh-cn”

mbstring.language= zh-cn

mbstring.internal_encoding=zh-cn

PHP字符串mbstring类库内容比较多,还包括mb_ send_ mail之类的email处理函数等

字符串的16、PHP中介绍

string是一系列字符。在 php中,字符和字节一样,也就是说,一共有 256种不同字符的可能性。这也暗示 php对 Unicode没有本地支持。请参阅函数utf8_encode()和utf8_decode()以了解有关 Unicode支持

注:一个字符串变得非常巨大也没有问题,php没有给字符串的大小强加实现范围,所以完全没有理由担心长字符串。

语法

字符串可以用三种字面上的方法定义。

单引号

双引号

定界符指定一个简单字符串的最简单的方法是用单引号(字符')括起来。

要表示一个单引号,需要用反斜线(/)转义,和很多其它语言一样。如果在单引号之前或字符串结尾需要出现一个反斜线,需要用两个反斜线表示。注意如果试图转义任何其它字符,反斜线本身也会被显示出来!所以通常不需要转义反斜线本身。

注:在 php 3中,此情况下将发出一个 E_NOTICE级的警告。

注:和其他两种语法不同,单引号字符串中出现的变量和转义序列不会被变量的值替代。

<?phpecho'this is a simple string';echo'You can also have embedded newlines instrings this way as it isokay to do';// Outputs: Arnold once said: I'll be backecho'Arnold once said: I/'ll be back';// Outputs: You deleted C:/*.*?echo'You deleted C://*.*?';// Outputs: You deleted C:/*.*?echo'You deleted C:/*.*?';// Outputs: This will not expand:/n a newlineecho'This will not expand:/n a newline';// Outputs: Variables do not$expand$eitherecho'Variables do not$expand$either';?>

此外,如果试图转义任何其它字符,反斜线本身也会被显示出来!

双引号字符串最重要的一点是其中的变量名会被变量值替代。细节参见字符串解析。另一种给字符串定界的方法使用定界符语法(“<<<”)。应该在<<<之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串。

结束标识符必须从行的第一列开始。同样,标识符也必须遵循 php中其它任何标签的命名规则:只能包含字母数字下划线,而且必须以下划线或非数字字符开始。

例子 11-3.非法的例子

<?phpclass foo{ public$bar=<<<EOTbarEOT;}?>

定界符文本表现的就和双引号字符串一样,只是没有双引号。这意味着在定界符文本中不需要转义引号,不过仍然可以用以上列出来的转义代码。变量会被展开,但当在定界符文本中表达复杂变量时和字符串一样同样也要注意。

例子 11-4.定界符字符串例子

<?php$str=<<<EODExample of stringspanning multiple linesusing heredoc syntax.EOD;/* More complex example, with variables.*/class foo{ var$foo; var$bar; function foo(){$this->foo='Foo';$this->bar= array('Bar1','Bar2','Bar3');}}$foo= new foo();$name='MyName';echo<<<EOTMy name is$name. I am printing some$foo->foo.Now, I am printing some{$foo->bar[1]}.This should print a capital'A':/x41EOT;?>注:定界符支持是 php 4中加入的。当用双引号或者定界符指定字符串时,其中的变量会被解析。

有两种语法,一种简单的和一种复杂的。简单语法最通用和方便,它提供了解析变量,数组值,或者对象属性的方法。

复杂语法是 php 4引进的,可以用花括号括起一个表达式。

简单语法如果遇到美元符号($),解析器会尽可能多地取得后面的字符以组成一个合法的变量名。如果想明示指定名字的结束,用花括号把变量名括起来。

<?php$beer='Heineken';echo$beer's taste is great;// works,' is an invalid character for varnamesecho He drank some$beers;// won't work,'s' is a valid character for varnamesecho He drank some${beer}s;// worksecho He drank some{$beer}s;// works?>

同样也可以解析数组索引或者对象属性。对于数组索引,右方括号(])标志着索引的结束。对象属性则和简单变量适用同样的规则,尽管对于对象属性没有像变量那样的小技巧。

<?php// These examples are specific to using arrays inside of strings.// When outside of a string, always quote your array string keys// and do not use{braces} when outside of strings either.// Let's show all errorserror_reporting(E_ALL);$fruits= array('strawberry'=>'red','banana'=>'yellow');// Works but note that this works differently outside string-quotesecho A banana is$fruits[banana].;// Worksecho A banana is{$fruits['banana']}.;// Works but php looks for a constant named banana first// as described below.echo A banana is{$fruits[banana]}.;// Won't work, use braces. This results in a parse error.echo A banana is$fruits['banana'].;// Worksecho A banana is.$fruits['banana']..;// Worksecho This square is$square->width meters broad.;// Won't work. For a solution, see the complex syntax.echo This square is$square->width00 centimeters broad.;?>

对于任何更复杂的情况,应该使用复杂语法。

复杂(花括号)语法不是因为语法复杂而称其为复杂,而是因为用此方法可以包含复杂的表达式。

事实上,用此语法可以在字符串中包含任何在名字空间的值。仅仅用和在字符串之外同样的方法写一个表达式,然后用{和}把它包含进来。因为不能转义“{”,此语法仅在$紧跟在{后面时被识别(用“{/$”或者“/{$”来得到一个字面上的“{$”)。用一些例子可以更清晰:

<?php// Let's show all errorserror_reporting(E_ALL);$great='fantastic';//不行,输出为:This is{ fantastic}echo This is{$great};//可以,输出为:This is fantasticecho This is{$great};echo This is${great};// Worksecho This square is{$square->width}00 centimeters broad.;// Worksecho This works:{$arr[4][3]};// This is wrong for the same reason as$foo[bar] is wrong// outside a string. In otherwords, it will still work but// because php first looks for a constant named foo, it will// throw an error of level E_NOTICE(undefined constant).echo This is wrong:{$arr[foo][3]};// Works. When using multi-dimensional arrays, always use// braces around arrays when inside of stringsecho This works:{$arr['foo'][3]};// Works.echo This works:.$arr['foo'][3];echo You can even write{$obj->values[3]->name};echo This is the value of the var named$name:{${$name}};?>

访问和修改字符串中的字符

字符串中的字符可以通过在字符串之后用花括号指定所要字符从零开始的偏移量来访问和修改。

注:为了向下兼容,仍然可以用方括号。不过此语法自 php 4起已过时。

例子 11-5.一些字符串例子

<?php// Get the first character of a string$str='This is a test.';$first=$str{0};// Get the third character of a string$third=$str{2};// Get the last character of a string.$str='This is still a test.';$last=$str{strlen($str)-1};// Modify the last character of a string$str='Look at the sea';$str{strlen($str)-1}='e';?>字符串可以用“.”(点)运算符连接。注意这里不能用“+”(加)运算符。更多信息参见字符串运算符。

有很多实用函数来改变字符串。

普通函数见字符串函数一节,高级搜索和替换见正则表达式函数(两种风格:Perl和 POSIX扩展)。

还有 URL字符串函数,以及加密/解密字符串的函数(mcrypt和 mhash)。

最后,如果还是找不到想要的函数,参见字符类型函数。可以用(string)标记或者strval()函数将一个值转换为字符串。当某表达式需要字符串时,字符串的转换会在表达式范围内自动完成。例如当使用echo()或者print()函数时,或者将一个变量值与一个字符串进行比较的时候。阅读手册中有关类型和类型戏法中的部分有助于更清楚一些。参见settype()。

布尔值TRUE将被转换为字符串 1,而值FALSE将被表示为(即空字符串)。这样就可以随意地在布尔值和字符串之间进行比较。

整数或浮点数数值在转换成字符串时,字符串由表示这些数值的数字字符组成(浮点数还包含有指数部分)。

数组将被转换成字符串 Array,因此无法通过echo()或者print()函数来输出数组的内容。请参考下文以获取更多提示。

对象将被转换成字符串 Object。如果因为调试需要,需要将对象的成员变量打印出来,请阅读下文。如果希望得到该对象所依附的类的名称,请使用函数get_class()。自 php 5起,如果合适可以用 __toString()方法。

资源类型总是以 Resource id#1的格式被转换成字符串,其中 1是 php在运行时给资源指定的唯一标识。如果希望获取资源的类型,请使用函数get_resource_type()。

NULL将被转换成空字符串。

正如以上所示,将数组、对象或者资源打印出来,并不能提供任何关于这些值本身的有用的信息。请参阅函数print_r()和var_dump(),对于调试来说,这些是更好的打印值的方法。

可以将 php的值转换为字符串以永久地储存它们。这种方法被称为序列化,可以用函数serialize()来完成该操作。如果在安装 php时建立了 WDDX支持,还可以将 php的值序列化为 XML结构。当一个字符串被当作数字来求值时,根据以下规则来决定结果的类型和值。

如果包括“.”,“e”或“E”其中任何一个字符的话,字符串被当作float来求值。否则就被当作整数。

该值由字符串最前面的部分决定。如果字符串以合法的数字数据开始,就用该数字作为其值,否则其值为 0(零)。合法数字数据由可选的正负号开始,后面跟着一个或多个数字(可选地包括十进制分数),后面跟着可选的指数。指数是一个“e”或者“E”后面跟着一个或多个数字。

<?php$foo= 1+ 10.5;//$foo is float(11.5)$foo= 1+-1.3e3;//$foo is float(-1299)$foo= 1+ bob-1.3e3;//$foo is integer(1)$foo= 1+ bob3;//$foo is integer(1)$foo= 1+ 10 Small Pigs;//$foo is integer(11)$foo= 4+ 10.2 Little Piggies;//$foo is float(14.2)$foo= 10.0 pigs+ 1;//$foo is float(11)$foo= 10.0 pigs+ 1.0;//$foo is float(11)?>

此转换的更多信息见 Unix手册中关于 strtod(3)的部分。

如果想测试本节中的任何例子,可以拷贝和粘贴这些例子并且加上下面这一行自己看看会发生什么:

<?phpecho/$foo==$foo; type is. gettype($foo).<br/>/n;?>

不要指望在将一个字符转换成整型时能够得到该字符的编码(可能也会在 C中这么做)。如果希望在字符编码和字符之间转换,请使用ord()和chr()函数。

在php中,怎样把数字转化为字符串

1、首先需要新建一个74.php。

2、然后需要按照图示代码输入php网页的结构(<?php?>)。

3、然后需要按照图示代码声明PHP与浏览器交互的文件类型和编码。

4、然后需要按照图示代码定义一个浮点形变量$a= 123。

5、然后需要按照图示代码输入代码$b=$a.'hello',让$a的数字转换成字符串。

6、然后需要按照图示代码使用var_dump()函数,输出$b。

7、运行网页,查看变量类型确实成功将数字转化为字符串。

关于php字符串函数,php 字符串长度的介绍到此结束,希望对大家有所帮助。

web页面开发?python web页面开发计算机c语言入门基础知识 C语言的基础知识