0

0

PHP 学习之字符串

不言

不言

发布时间:2018-04-09 15:57:34

|

1619人浏览过

|

来源于php中文网

原创

本篇文章介绍的内容是php学习中的字符串,现在分享给大家,有需要的朋友可以参考一下

创建

PHP 支持 4 种方式来创建一个字符串:单引号、双引号、heredoc 语法结构和 nowdoc 语法结构。

1. 单引号

在单引号字符串中,变量和特殊字符将不会被转义替换,除了反斜杠和单引号本身:

echo 'Arnold once said: "I\'ll be back"'; # Arnold once said: "I'll be back"

echo 'You deleted C:\\*.*?'; # You deleted C:\*.*?
2. 双引号

能够识别字符串中的变量和转义序列:

$juice = 'apple';
echo "$juice juice."; # apple juice.

echo "Hello \nWorld!";
#Hello
#World!
3. heredoc 语法结构

与双引号字符串相似。结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号;标记之间的变量可以被正常解析,但是函数则不可以。常用在输出包含大量 HTML 文档的时候。

立即学习PHP免费学习笔记(深入)”;

$str = 'heredoc';
$html = <<
    

$str

END; echo $html; #

#

#

#

heredoc

#

#

#

4. nowdoc 语法结构

heredoc 语法结构字符串相似,但是 nowdoc 不进行变量和转义序列的解析操作。

$str = 'nowdoc';
$html = <<<'END'

$str

END; echo $str; #

#

#

#

$str

#

#

#

字符串编码

在 PHP 字符串中,每个字符使用一个字节存储(内存中),这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode。

PHP 中的 string 的实现方式是一个由字节组成的数组再加上一个整数指明缓冲区长度。并无如何将字节转换成字符的信息,由程序员来决定。由于 PHP 并不特别指明字符串的编码,那字符串到底是怎样编码的呢?答案是字符串会被按照该脚本文件相同的编码方式来编码。

一般情况下,虽然 PHP 内部不支持 Unicode 字符集,但是文件支持 UTF-8 编码,绝大部分情况下不会有什么问题,但是遇到字符串编码转换的时候就有问题了,比如在一个 UTF-8 编码的 PHP 文件中,程序输出的字符数(6)并不等于实际的字符数(2):

echo strlen('中国'); # 6
mbstring 提供了针对多字节字符串的函数,能够帮你处理 PHP 中的多字节编码。 除此以外,mbstring 还能在可能的字符编码之间相互进行编码转换。

因此,当需要操作 Unicode 字符集的字符串时候,请务必安装 mbstring 扩展,并使用相应的函数代替原生的字符串函数:

echo mb_strlen('中国', 'UTF-8'); # 2
mbstring 扩展大部分的函数都需要基于一个编码(内部编码)来处理,请务必统一使用 UTF-8 编码,这个大部分可以在 PHP.INI 中配置。

对于 PHP 字符串编码问题,强烈建议:

  1. PHP 脚本文件使用 UTF-8 无 BOM 编码格式;

  2. 字符串操作使用 mbstring 扩展函数;

  3. 数据库的连接和存储使用 UTF-8 编码;

  4. HTML 文档使用 UTF-8 编码。

字符串格式化

1. 字符串去除

rtrim() — 删除字符串末端的空白字符(或者其他字符)
ltrim() — 删除字符串开头的空白字符(或其他字符)
trim() — 去除字符串首尾处的空白字符(或者其他字符)

$text = "\t\tThese are a few words :) ...  \n";
echo rtrim($text); # "\t\tThese are a few words :) ..."
echo ltrim($text); # "These are a few words :) ...  \n"
echo trim($text);  # "These are a few words :) ..."

$trimmed = trim($hello, "ld"); # "Hello Wor"
2. 格式化字符串以便输出

nl2br() — 在字符串所有新行之前插入 HTML 换行标记
printf() — 输出格式化字符串
sprintf() — 把格式化的字符串写入变量中

echo nl2br("hello \nworld");
#hello 
#world

printf('I need to pay $%.02lf', 1.3568); # I need to pay $1.36

$str = sprintf('I need to pay $%.02lf', 1.3568);
echo $str; # I need to pay $1.36

htmlspecialchars() — 将特殊字符转换为 HTML 实体
htmlentities() — 将字符转换为 HTML 转义字符

智能网站优化SiteSEO1.52
智能网站优化SiteSEO1.52

系统易学易懂,用户只需会上网、不需学习编程及任何语言,只要使用该系统平台,只要会打字,即可在线直接完成建站所有工作。本程序适合不懂php环境配置的新手用来在本机调试智能SiteSEO网站优化软件,安装过程极其简单。您的网站地址:http://localhost您的网站后台:登录地址: http://localhost/admin.php密 码: admin服务器套件所包含的软件:nginx-0.7

下载
echo htmlspecialchars("Test", ENT_QUOTES); # zuojiankuohaophpcna href='test'youjiankuohaophpcnTestzuojiankuohaophpcn/ayoujiankuohaophpcn

echo htmlentities("A 'quote' is bold"); # A 'quote' is zuojiankuohaophpcnbyoujiankuohaophpcnboldzuojiankuohaophpcn/b>
3. 格式化字符串以便存储

stripslashes() — 反引用一个引用字符串
addslashes() — 使用反斜线引用字符串

$str = "Is your name O\'reilly?";
echo stripslashes($str); # Is your name O'reilly?
echo addslashes($str);   # Is your name O\'reilly?
4. 改变字符串的字母大小写

strtolower() — 将字符串转化为小写
strtoupper() — 将字符串转化为大写
ucfirst() — 将字符串的首字母转换为大写
ucwords() — 将字符串中每个单词的首字母转换为大写

$str = "Mary Had A Little Lamb and She LOVED It So";
echo strtolower($str); # mary had a little lamb and she loved it so
echo strtoupper($str); # MARY HAD A LITTLE LAMB AND SHE LOVED IT SO

$foo = 'hello world!';
$foo = ucfirst($foo); # Hello world!
$foo = ucwords($foo); # Hello World!

字符串连接和分割

1. explode()

使用一个字符串分割另一个字符串:

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
print_r($pieces); 
# Array ( [0] => piece1 [1] => piece2 [2] => piece3 [3] => piece4 [4] => piece5 [5] => piece6 )
2. implode() 或 join()

将一个一维数组的值拼接为字符串:

$array = array('lastname', 'email', 'phone');
echo implode(',', $array); # lastname,email,phone
3. substr()

返回字符串的子串:

echo substr('abcdef', 1);     # bcdef
echo substr('abcdef', 1, 3);  # bcd
echo substr('abcdef', -1, 1); # f

字符串比较

1. strcmp()

二进制安全字符串比较(区分大小写):

echo strcmp('jochen', 'Jochen'); # 32,如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。
2. strcasecmp()

二进制安全比较字符串(不区分大小写):

echo strcasecmp('jochen', 'Jochen'); # 0
3. strnatcmp()

使用自然排序算法比较字符串:

echo strnatcmp('img12.png', 'img10.png'); # 1,

字符串查找和替换

1. strstr()

查找字符串的首次出现并返回字符串:

echo strstr('name@example.com', '@'); # @example.com
2. strpos()

查找字符串首次出现的位置:

$hello = 'Hello World';
if(strpos($hello, 'H') !== false) {
    echo 'Find';
} else {
    echo 'No Find';
}
3. str_replace()

匹配字符串并替换:

$search = "world";
$replace = "Shanghai";
$subject = "Hello world!";
echo str_replace($search, $replace, $subject); # Hello Shanghai
4. substr_replace()

替换指定位置的字符串:

$replace = "Shanghai";
$subject = "Hello world!";
echo substr_replace($subject, $replace, 6); # Hello Shanghai

正则表达式

1. preg_match()

执行一个正则表达式匹配:

$email = '10001110@qq.com';
$pattern = "/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([.a-zA-Z0-9_-])+([.a-zA-Z0-9_-]+)+([.a-zA-Z0-9_-])$/";

if (preg_match($pattern, $email, $match)) {
    echo '匹配成功
'; } else { echo '匹配失败
'; }
2. preg_match_all()

执行一个全局正则表达式匹配:

$str = "Name: John Poul 
Title: PHP Guru"; preg_match_all("/(.*)<\/b>/U", $str, $result); print_r($result); # Array ( [0] => Array ( [0] => John Poul [1] => PHP Guru ) [1] => Array ( [0] => John Poul [1] => PHP Guru ) )
3. preg_split()

通过一个正则表达式分隔字符串:

$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
# Array ( [0] => hypertext [1] => language [2] => programming )
4. preg_replace()

执行一个正则表达式的搜索和替换:

$str = 'foo   o';
echo preg_replace('/\s\s+/', ' ', $str); # 'foo o'

$count = 0;
echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count); # xp***to
echo $count; # 3

相关推荐:

php字符串用法详解 

PHP字符串转数组和数组转字符串函数讲解 

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

1929

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1263

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1169

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1399

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1229

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1439

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号