php字符串与字符替换函数
在php教程替换字符效率最高也是最简单字符替换函数str_replace($arr1,$arr2,$str)
实例一
代码如下 | 复制代码 |
str_replace("iwind", "kiki", "i love iwind, iwind said"); 将输出 "i love kiki, kiki said" |
结果
即将 原字符串中的所有"iwind"都替换成了"kiki".str_replace是大小写敏感的,所以对你不能设想用 str_replace("iwind", "kiki",...)替换原字符串中的"iwind". str_replace还可以实现多对一
定义和用法
str_replace() 函数使用一个字符串替换字符串中的另一些字符。
语法
str_replace(find,replace,string,count)参数 描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。
下面用一款
//-- 程序名称:strreplace()
//-- 程序用途:替换变量中的非法字符
//-- 传入参数:变量值
//********************************************************
代码如下 | 复制代码 |
function strreplace($str){ $str = str_replace('>',">",$str); return trim($str); |
比如语句:
代码如下 | 复制代码 |
$fa=3.14; |
字符串和数组是引用类型,也就是说他们作为地址放在栈里,当重新赋值时,栈里的地址改变方向,原来的指向变没或给回收了,英文:string、array。
比如:$str=”字符串”;$arr=array(“a”=>”数”,”b”=>”组”);// array()是一个数组赋值函数,这样的函数php有一千多个,一般常用的不到200个,我觉得。
字符串操作:
实例2:字符串合并、相加
复制代码 代码如下:
代码如下 | 复制代码 |
<?php $str = 1; echo $str .= ""; //数字转化为字符串再合并,结果:"1"。 echo "<br>"; echo $str += "1元"; //字符串转化为数字再相加,如"1xxx"转化为数字1,结果: 2。 echo "<br>"; ?> |
实例3:字符串改变大小写
复制代码 代码如下:
代码如下 | 复制代码 |
<?php $str="12345abc"; echo strtolower($str);//变小写,结果:"12345abc"。 echo "<br>"; echo strtoupper($str);//变小写,结果:"12345abc"。 echo "<br>"; ?> |
实例4:字符串长度、截取子字符串(中英文)
复制代码 代码如下:
代码如下 | 复制代码 |
<?php $str = "字符串2"; echo mb_strlen($str, "utf-8"); //返回字符串长度的函数,第二个参数是编码,由于页面用utf-8编码,所以为这样。如果省去,返回内存占用的字节数(ascii),即10。结果4 echo "<br>"; echo mb_substr($str, 1, 2, "utf-8"); //返回字符截取,1为从”符”地址开始截取,2为截取2个"utf-8"编码的字符,结果:“符串”。 echo "<br>"; /** * 知识点:现在开始接触函数了,每个函数都有()作为堆栈调用,()里面放0个或多个参数,可以自定义可以有默认值。而关键字比如echo是没有()的。 * 很多书用gb2312编码,取长度和子串时很麻烦。下面给大家参考一下不用上面的mb中文字符串扩展库实现原理: */ function my_mb_strlen($str, $code = "utf-8") // 定义一个新函数,$str是必须传入的参数。 {$num= 0; if ($code == "utf-8") { $str = iconv("utf-8", "gb2312", $str); //转化为gb2312编码,ord函数返回对应的ascii值判断每个字节该中文字符是否结束。 for($i = 0;$i < strlen($str);$i++) // 在此strlen($str)返回内存占用的字节数相当于mb_strlen($str) { if (ord($str[$i]) > 0xa0)$i++; //$str[$i]对应内存的i字节。如果直接用utf-8判断会复杂些,因为编码的多样性utf-8是网页常用编码,utf-16(unicode)是windows编码。 $num++; } } else { $num = "编码未实现"; } //有兴趣的自己查资料吧 return $num; } echo my_mb_strlen($str) . ";" . my_mb_strlen($str, "gb2312") . "<br>"; //该页编码用utf-8,你却说传入的字符串3是gb2312,就算函数实现了也无法正确的。 ?> |
实例5:子字符串查找、替换
复制代码 代码如下:
代码如下 | 复制代码 |
<?php $str = "字符串4"; echo mb_strpos($str, '串4', 0, "utf-8"); //查找从0开始找到的第一个子字符串位置,结果:2。如果查找不到,返回空(="");如果最后两个参数不要,返回6。 echo "<br>"; echo mb_strstr($str, '串', 0, "utf-8"); //截取从0开始找到的第一个子字符串至结尾,结果:"串4"。如果查找不到,返回空(="");如果最后两个参数不要,返回相同=strstr($str,'串')。 echo "<br>"; echo str_replace("4", "不是4", $str) ; //字符串替换,结果: "字符串不是4"。 echo "<br>"; ?> |
实例6:子字符串去空、html转义
复制代码 代码如下:
代码如下 | 复制代码 |
<?php $str=" 字符串5 "; echo $str=trim($str);//去除两边空格,结果:"字符串5"。 echo "<br>"; echo "color="red"";//手工转义里面的'、"、,使之存储到内存,结果"color="red"" echo "<br>"; $str="<br>123"; echo htmlentities($str) ; //字符串转义<>&'"避免和html标识冲突,使之能在html浏览器端显示出来,结果:"<br>123"。 echo "<br>"; ?> |
代码如下 | 复制代码 |
$mode = "/^[a-z][-_.]?[a-zd]*@[a-z0-9]+[.][a-z]{2,4}/i"; $str = "a12345@j111cn.net"; echo $str.'<hr>'; if(preg_match($mode, $str, $arr)){ echo 'succeed -- <font color=red>'.$arr[0]; }else{ echo 'failed'; } |
d 包含所有数字[0-9]
d 除所有数字外[^0-9]
w 包含所有英文字符[a-za-z_0-9]
w 除所有英文字符外[^a-za-z_0-9]
s 包含空白区域如回车、换行、分页等 [fnr]
preg_match_all ( string pattern, string subject, array matches [, int flags] )
截取比较详细的内容,采集网页,分析文本
代码如下 | 复制代码 |
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] ) preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] ) |
提示 1、替换内容可以是一个正则也可以是数组正则
2、替换内容可以通过修正符e来解决替换执行内容
代码如下 | 复制代码 |
preg_split ( string pattern, string subject [, int limit [, int flags]] ) |
关于php中单引号与双引号区别有那些很,至于大家都说的下面我用我的理解来说说关于单引号与双引号的区别所在吧,单引号在其中间的变量是不被执行的,把变量当成了一个普通的字符串,而双引号php会去解析中间有变量没有,有的话解析变量,这样双引号在一些方法更费服务器资源。
单引号和双引号大体相同,但有一点非常重要,,就是变量引用问题 ,你把下面代码运行即可明白了
代码如下 | 复制代码 |
<?php $x="中国"; echo "我是$x人";//双引号 echo "<br />"; echo '我是$x人';//单引号 ?> |
变量用双引号括起来,单引号中的则不是(即单引号中的变量符号不解析)
单引号内部的变量不会执行
双引号会执行
如
代码如下 | 复制代码 |
$name = 'hello'; echo "the $name"; |
会输出 the hello
而如果是单引号
代码如下 | 复制代码 |
$name = 'hello'; echo 'the $name'; |
会输出 the $name
主要区别就是这个。
在字符串中引用复杂的变量组合时,可能会产生一些问题,下面的代码会正常工作:
代码如下 | 复制代码 |
echo "value = $foo"; echo "value = $a[$i]"; |
而下面的代码却不能得到我们希望的结果:
echo "value = $a[$i][$j]"; //我们希望打印二维数组$a的某个元素。
为避免这些字串使用中的潜在问题,我们通常把复杂的变量从字串中分离开来,就像这样:
代码如下 | 复制代码 |
echo 'value = ' . $a[$i][$j]; |
还有一种办法是将复杂变量用花括号括起来,语法分析器就能正确辨认了:
代码如下 | 复制代码 |
echo "value = {$a[$i][$j]}" //打印二维数组$a的某个元素 |
这样,又出现新问题了。当我们想在字串中引用花括号字符本身时,就要记得使用转义符了:
代码如下 | 复制代码 |
$var = 3; echo "value = {$var}"; // 打印结果 "value = 3" echo "value = {$var}"; // 打印结果 "value = {3}" |
看个实例
代码如下 | 复制代码 |
$var1 = "chris mao"; //assign the value "chirs mao" to $var1 |
//方法一
$ereg_str[url] = "^[hh]{1}[tt]{2}[pp]{1}://[ww]{3}.[0-9a-za-z][0-9a-za-z-]{0,25}((.[a-za-z]{3,4})|(.[a-za-z]{2})){1,2}$ "; //判断一个合法的url
$pattern = $ereg_str['url'];
if(ereg($pattern,$string)) echo " <br> right! ";
else echo " <br> error! ";
}
//
$str[] = "http://www.111cn.net";
$pattern = '/^(http://)?www.[0-9a-z][0-9a-z-]{0,25}((.(aero|biz|cc|co|com|coop|edu|gov|info|int|mil|museum|name|nato|net|org|tv))?(.(af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za))?){1}$/i ';
foreach($str as $key=> $val)
{
$key++;
if(preg_match($pattern,$val))
echo " <br> <font color=green> right! </font> ".$val;
else
echo " <br> <font color=red> error! </font> ".$val;
}
//方法三
//匹配<a href="xxxxxx">yyyyyy</a>
"/<a.+hrefs*=s*['"]?([^s<'"]*)['"]?.*>([^</a>].*)</a>/i"
//匹配href="xxxxxx"
s*<[aa]{1}s*href="([^"]*)"s*>([^<]*)</1>
$reg = "<a[ss]*?(href)s*=s*(?(?=["'])((["'])(?<href>[^"']*)2)|(?<src>[^s>]+))[ss]*?>";
?>
相关文章
- 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
- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25