php中几个字符串替换函数详解
一、str_replace(find,replace,string,count)
作用:str_replace() 函数使用一个字符串替换字符串中的另一些字符。
参数 描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。
例
在本例中,我们将演示带有数组和 count 变量的 str_replace() 函数:
代码如下 | 复制代码 |
<?php Array |
补充:count如果被指定,它的值将被设置为替换发生的次数。
二、substr_replace(string,replacement,start,length)
作用:substr_replace() 函数把字符串的一部分替换为另一个字符串。
参数 描述
string 必需。规定要检查的字符串。
replacement 必需。规定要插入的字符串。
start 必需。规定在字符串的何处开始替换。
■正数 - 在第 start 个偏移量开始替换
■负数 - 在从字符串结尾的第 start 个偏移量开始替换
■0 - 在字符串中的第一个字符处开始替换
charlist 可选。规定要替换多少个字符。
■正数 - 被替换的字符串长度
■负数 - 从字符串末端开始的被替换字符数
■0 - 插入而非替换
例子
代码如下 | 复制代码 |
<?php 输出: Hello earth |
三、preg_replace ( pattern , replacement , subject,limit = -1 ,$count )
作用:执行一个正则表达式的搜索和替换
参数 描述
pattern 必需。需要搜索的模式。
replacement 必需。用于替换的字符串或数组。
subject 必需。需要替换的字符串或数组。
limit 替换的次数。-1为无限
count 完成替换的次数,变量
Example #1 使用后向引用紧跟数值原文
代码如下 | 复制代码 |
<?php $string = 'April 15, 2003'; $pattern = '/(w+) (d+), (d+)/i'; $replacement = '${1}1,$3'; echo preg_replace($pattern, $replacement, $string); ?> |
以上例程会输出:
April1,2003
Example #2 preg_replace()中使用基于索引的数组
代码如下 | 复制代码 |
<?php $string = 'The quick brown fox jumped over the lazy dog.'; $patterns = array(); $patterns[0] = '/quick/'; $patterns[1] = '/brown/'; $patterns[2] = '/fox/'; $replacements = array(); $replacements[2] = 'bear'; $replacements[1] = 'black'; $replacements[0] = 'slow'; echo preg_replace($patterns, $replacements, $string); ?> |
以上例程会输出:
The bear black slow jumped over the lazy dog.
四、preg_split ( pattern , subject,limit = -1 ,flag )
作用:通过正则表达式分割字符串
参数 描述
pattern 必需。需要搜索的模式。
replacement 必需。用于替换的字符串或数组。
subject 必需。需要替换的字符串。
limit 被分割的字符串最多limit。
flag 模式
例 1672. preg_split() 例子:取得搜索字符串的成分
代码如下 | 复制代码 |
<?php |
例 1673. 将字符串分割成字符
代码如下 | 复制代码 |
<?php |
例 1674. 将字符串分割为匹配项及其偏移量
代码如下 | 复制代码 |
<?php |
本例将输出:
Array
(
[0] => Array
(
[0] => hypertext
[1] => 0
)
[1] => Array
(
[0] => language
[1] => 10
)
[2] => Array
(
[0] => programming
[1] => 19
)
)
五、str_split ( subject,length)
作用:将字符串分割成数组
参数 描述
subject 字符串。
length 每一段的长度。
例子 1
代码如下 | 复制代码 |
<?php print_r(str_split("Hello")); ?> |
输出:
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
)
例子 2
代码如下 | 复制代码 |
<?php print_r(str_split("Hello",3)); ?> |
输出:
Array
(
[0] => Hel
[1] => lo
)
spl_autoload_register()函数应该是主流框架使用最多的也是非常核心的函数之一,可实现自动注册函数和类,实现类似__autoload() 函数功能,简化了类的调用与加载,提高了工作的效率。
支持版本:PHP 5 >= 5.1.2
至于效率问题。php手册上有如此之话:
bool spl_autoload_register ([ callback $autoload_function ] )
将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为spl_autoload_register()函数会将Zend Engine中的__autoload函数取代为spl_autoload()或spl_autoload_call()。
spl_autoload_register
(PHP 5 >= 5.1.2)
spl_autoload_register — 注册__autoload()函数
说明
bool spl_autoload_register ([ callback $autoload_function ] )
将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。
如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为
spl_autoload_register()函数会将Zend Engine中的__autoload函数取代为spl_autoload()或
spl_autoload_call()。
参数
autoload_function
欲注册的自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数
spl_autoload()。
返回值
如果成功则返回 TRUE,失败则返回 FALSE。
注:SPL是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。 SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能的函数来实现的。SPL有两个不同的函数 spl_autoload, spl_autoload_call,通过将autoload_func指向这两个不同的函数地址来实现不同的自动加载机制。
代码如下 | 复制代码 |
<?php |
在补充下:
__autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法
* 可以通过下面的方法来把 _autoload 方法加入 autoload_functions list
spl_autoload_register( '__autoload' );
此外我们还可以使用我们自定义的加载方法:
第一种函数式:
代码如下 | 复制代码 |
function my_own_loader($classname) |
第二种类式:
代码如下 | 复制代码 |
class Loader |
实例:CI框架实现类加载的同时,其对应的model也生成。
代码如下 | 复制代码 |
static public function myAutoload($class){ |
当然上面只是最简单的示范,__autoload只是去include_path寻找类文件并加载,我们可以根据自己的需要定义__autoload加载类的规则。
此外,假如我们不想自动加载的时候调用__autoload,而是调用我们自己的函数(或者类方法),我们可以使用spl_autoload_register来注册我们自己的autoload函数。它的函数原型如下:
bool spl_autoload_register ( [callback $autoload_function] )
我们继续改写上面那个例子:
代码如下 | 复制代码 |
view plaincopy to clipboardprint? spl_autoload_register('loader'); $a = new A(); <?php spl_autoload_register('loader'); $a = new A(); |
这样子也是可以正常运行的,这时候php在寻找类的时候就没有调用__autoload而是调用我们自己定义的函数loader了。同样的道理,下面这种写法也是可以的:
代码如下 | 复制代码 |
view plaincopy to clipboardprint? spl_autoload_register(array('Loader', 'loadClass')); $a = new A(); |
正则函数关系暧昧所以都放到一起比较一下,方便参考。
名称 | 支持正则 | 特点 | 备注 |
str_replace | X | 字符串替换函数,大小写敏感 | |
str_ireplace | X | 字符串替换函数,大小写不敏感,支持数组式批量替换 | 感谢网友franci,提醒添加 |
substr_replace | X | 部分替换字符串函数,可以指定位置index | |
preg_replace | Y | 指定匹配模式进行替换,支持子串引用 | 优先使用 |
ereg_replace | Y | 指定匹配模式进行替换,大小写敏感,支持子串引用 | |
eregi_replace | Y | 指定匹配模式进行替换,大小写不敏感,支持子串引用 | |
ereg | Y | 指定模式全文匹配,可以用来匹配判断,或返回匹配数组 | |
preg_match | Y | 指定模式匹配一次退出,可以用来是否匹配判断,或使用返回的匹配数组 | 优先使用 |
preg_match_all | Y | 指定模式全文匹配,一般用来使用返回的匹配数组 | 优先使用 |
preg_split | Y | 指定匹配模式下正则剖分,如果能用最好还是使用explode或str_split | |
str_split | X | 指定长度剖分字符串,默认单个字符剖分成数组 | |
explode | X | 可以指定单个或多个字符剖分字符串,成功则返回数组,例如12345按照34剖分则返回12和5 | |
preg_quote | - | 转义正则表达式字符,意思就是为特殊字符加上反斜线,正则表达式的特殊字符包括:. + * ? [ ^ ] $ ( ) { } = ! < > | : - | |
补充说明:
1、在PHP中有两套正则表达式函数库,功能非常相似:
一套是POSIX(Portable Operating System Interface of Unix )库提供的,函数以ereg_前缀命名,POSIX正则函数库目前已经不再推荐使用。
一套是PCRE(Perl Compatible Regular Expression)库提供的,函数以preg_前缀命名,推荐大家优先使用。在PCRE中,通常将模式表达式(即正则表达式)包含在两个反斜线“/”之间,如“/^w+$/”样式。
2、PHP正则表达式作用:匹配提取、匹配替换。
如果你想使用php获取图片的高与宽我们可以直接利用php中的getimagesize函数来操作,下面我来给大家详细介绍getimagesize函数使用方法。getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。
代码如下 | 复制代码 |
<?php/* 1.jpg为你想获得其尺寸的图片 */ /** /* 以下两行代码输出的内容都是一样的 */ |
以上php代码被解释为内容为:
代码如下 | 复制代码 |
|
例
Example #1 getimagesize(文件)
代码如下 | 复制代码 |
<?php |
一、操作文件,获取文件信息
代码如下 | 复制代码 |
//打开文件 //单个的取出 }else{ |
2、第二种获取文件信息方式
代码如下 | 复制代码 |
//第二种获取文件信息 echo "<br>".date("Y-m-d H:i:s",fileatime($file_path)); //echo "<br>".filemtime($file_path); |
二、读取文件操作
代码如下 | 复制代码 |
<?php //读取文件 if(!file_exists($file_path)){ fclose($fp);
|
2、第二种读取文件的方式
代码如下 | 复制代码 |
$file_path="text.txt"; $content=str_replace("rn","<br/>",$content);
|
3、第三种读取方法,循环读取(对付大文件)
代码如下 | 复制代码 |
$file_path="text.txt"; //打开文件 fclose($fp);
|
4、文件读取实际应用:当我们连接数据库的时候,可以把指定的数据配置到一个文件中,然后再PHP运行时,实时获取信息
代码如下 | 复制代码 |
db.ini 文件 host=127.0.0.1 |
获取文件
代码如下 | 复制代码 |
$arr=parse_ini_file("db.ini"); //连接数据库 if(!$conn){ echo "OK"; |
三、写文件
代码如下 | 复制代码 |
<?php //写文件 $fp=fopen($file_path,"w+"); echo "添加成功"; |
2、第二中方式 通过file_put_contents函数
代码如下 | 复制代码 |
//将一个字符串写入文件 默认是【FILE_USE_INCLUDE_PATH 】"w+"重新写入 echo "OK"; |
相关文章
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- 要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07