Blogger Information
Blog 71
fans 1
comment 1
visits 87289
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
418-PHP字符串函数
小威的博客
Original
829 people have browsed it

  • 字符串函数(一):长度计算

1.strlen($str):获取字节表示的字符串长度 //utf8模式下,一个中文字符用三个字节表示

实例

<?php
$web_Name = 'php中文网';
//获取内部字符编码集
$encoding =   mb_internal_encoding();
echo '内部字符编码集: ',$encoding,'<hr>';
echo strlen($web_Name),'<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例


2.mb_strlen($str, $encoding):获取字符数的表面的长度


实例

<?php
$web_Name = 'php中文网';
$encoding =   mb_internal_encoding();
echo mb_strlen($web_Name, $encoding),'<hr>';
echo '//省略第二个参数(编码类型),会使用系统默认的字符编码集,当前是utf-8','<hr>';
echo mb_strlen($web_Name),'<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例


  • 字符串函数(二):比较运算

$str1 = 'php中文网';
$str2 = 'PHP中文网';

1.strcmp($str1, $str2):字符串比较,相等返回0,大于返回>0,否则返回<0

echo strcmp($str1, $str2) == 0 ? '相等' : '不相等', '<br>';

2.strncmp($str, $str2, $n):比较开头指定长度是否相等

echo strncmp($str1, $str2, 3) == 0 ? '相等' : '不相等', '<br>';

3.strcasecmp($str1, $str2):不区分大小写的字符串比较,相等返回0,大于返回>0,否则返回<0

echo strcasecmp($str1, $str2) == 0 ? '相等' : '不相等', '<br>';

4.strncasecmp($str1, $str2):不区分大小写比较开头指定长度是否相等

echo strncasecmp($str1, $str2,3) == 0 ? '相等' : '不相等', '<br>';

5.strspn($str, $mark, $start, $length):计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度

//$str1:要比较的字符串, $mark:类似于集合,返回匹配的数量

echo strspn('15705519989', '1234567890'),'<br>';  //返回11

//可以指定开始比较的位置与长度

echo strspn('15705519989', '1234567890', 4, 4),'<br>';//返回4

//只比较$str中的第一个子串,后面的全部忽略掉,返回11

echo strspn('15705519989 18955123344 111abc', '1234567890'),'<br>';

//返回3,因为第一个字串中只有前三个是属于数字集合中的数据

echo strspn('157php 18955123344 111abc', '1234567890'),'<br>';

6.strcspn()与strspn()功能正好相反


实例

<?php
$str1 = 'php中文网';
$str2 = 'PHP中文网';

//1.strcmp($str1, $str2):字符串比较,相等返回0,大于返回>0,否则返回<0
echo strcmp($str1, $str2) == 0 ? '相等' : '不相等', '<br>'; 

//2.strncmp($str, $str2, $n):比较开头指定长度是否相等
echo strncmp($str1, $str2, 3) == 0 ? '相等' : '不相等', '<br>';

//3.strcasecmp($str1, $str2):不区分大小写的字符串比较,相等返回0,大于返回>0,否则返回<0
echo strcasecmp($str1, $str2) == 0 ? '相等' : '不相等', '<br>'; 

//4.strncasecmp($str1, $str2):不区分大小写比较开头指定长度是否相等
echo strncasecmp($str1, $str2,3) == 0 ? '相等' : '不相等', '<br>'; 

//5.strspn($str, $mark, $start, $length):
//计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度
//$str1:要比较的字符串, $mark:类似于集合,返回匹配的数量
echo strspn('15705519989', '1234567890'),'<br>';  //返回11
//可以指定开始比较的位置与长度
echo strspn('15705519989', '1234567890', 4, 4),'<br>';//返回4
//只比较$str中的第一个子串,后面的全部忽略掉,返回11
echo strspn('15705519989 18955123344 111abc', '1234567890'),'<br>';
//返回3,因为第一个字串中只有前三个是属于数字集合中的数据
echo strspn('157php 18955123344 111abc', '1234567890'),'<br>';

//例如手机号必须是纯数字字符串,要求用户必须输入的是纯数字的字符串
$phone = '13899886767';
// $phone = '1389988php6767';
$mark = '0123456789';
//分析,如果正确匹配,那么strspn()必返回11,因为手机号是11,与strlen($phone)正好相等
echo strlen($phone)==strspn($phone, $mark) ? '全数字' : '必须全为数字';
//等价于: strspn(substr($subject, $start, $length), $mask)

//6.strcspn()与strspn()功能正好相反,大家可自行举例验证

运行实例 »

点击 "运行实例" 按钮查看在线实例


  • 字符串与数组之间的转换

1.str_split($str,$length=1)按字符数量,将字符串分割为数组,默认为1


<?php
$str = 'html,css,jquery,php,mysql,thinkphp';
echo '<p>原始字符串:'.$str.'</p>';
print_r(str_split($str,6));

2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量

<?php
$str = 'html,css,jquery,php,mysql,thinkphp';
echo '<p>原始字符串:'.$str.'</p>';
print_r(explode(',',$str,5));

3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔

<?php
$str = 'html,css,jquery,php,mysql,thinkphp';
echo '<p>原始字符串:'.$str.'</p>';
$arr2 = explode(',', $str);
echo implode(' ', $arr2), '<br>'; //用空格分隔
echo implode(',',$arr2), '<br>'; //用,分隔
echo implode('--',$arr2), '<br>'; //用--分隔
echo '<h4 style="color:fuchsia">前面的分隔符可以用任何特殊符号</h4>';


实例

<?php
echo '<h3>字符串与数组之间的转换</h3><hr color="red">';
echo '<h4 style="color:red">1.str_split($str,$length=1)按字符数量,将字符串分割为数组,默认为1</h4><hr>';
$str = 'html,css,jquery,php,mysql,thinkphp';
echo '<p>原始字符串:'.$str.'</p>';
print_r(str_split($str,6));

echo '<hr color="blue">';
echo '<h4 style="color:blue">2.explode($delimiter,$str,$num):按分隔符,将字符串分割为数组,可指定数组元素数量</h4><hr>';
print_r(explode(',',$str,5));//用','号进行分割字符串,指定数组必须是5个元素,最后一个元素保存全部剩余数据

echo '<hr color="fuchsia">';
echo '<h4 style="color:fuchsia">3.implode($glue, $str):按分隔符,将一维数组拼装成字符串,默认用空格分隔</h4><hr>';
$arr2 = explode(',', $str);
echo implode(' ', $arr2), '<br>'; //用空格分隔
echo implode(',',$arr2), '<br>'; //用,分隔
echo implode('--',$arr2), '<br>'; //用--分隔
echo '<h4 style="color:fuchsia">前面的分隔符可以用任何特殊符号</h4>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

  • 字符串函数(四):html与字符串之间的转换

1.addslashes($str),对单引号,双引号,转义符进行转义

2.stripslashes($str):功能与addslashes()相反,去掉字符串中的转义反斜线字符


3.htmlspecialchars($str,FLAG):将特殊字符转换为 HTML 实体//&->&amp;"=>&quot;'->&apos/&#039; < &lt; > &gt;

4.htmlspecialchars_decode():将特殊的 HTML 实体转换回普通字符,与上一个是互逆操作

5.strip_tags($str,$allow)从字符串中去除HTML和PHP标记

实例

<?php 
$str = <<< 'NOWDOC'
<h4>PHP课程介绍</h4>
<ol>
	<li>'PHP'基本语法&案例</li>
	<li>"PHP"的数据库操作</li>
	<li>\PHP面向对象编程</li>
</ol>
NOWDOC;
echo '原始字符串:'.$str.'<hr color="red">';
//1.addslashes($str),对单引号,双引号,转义符进行转义
$str1 = addslashes($str);
echo $str1, '<hr>';

//2.stripslashes($str):功能与addslashes()相反,去掉字符串中的转义反斜线字符
$str2 = stripslashes($str1);
echo  $str2,'<hr>';

//3.htmlspecialchars($str,FLAG):将特殊字符转换为 HTML 实体
//&->&"=>"'->&apos/' < < > >
$str3 = htmlspecialchars($str2); //必须查看源码才能看到结果
echo  $str3,'<hr>';

//4.htmlspecialchars_decode():将特殊的 HTML 实体转换回普通字符,与上一个是互逆操作
$str4 = htmlspecialchars_decode($str3); 
echo  $str4,'<hr>';

//5.strip_tags($str,$allow)从字符串中去除HTML和PHP标记
$str5 = strip_tags($str4); //输出的是去掉所有标签的纯文本
$str5 = strip_tags($str4,'<h4>'); //保留<h4>标签,其它的删除
echo  $str5,'<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

  • 字符串函数(六):查找与替换

1.strpos($str1,$str2, $offset)查找$str1在$str1中首次出现的位置

2.strstr($str1, $str2),如果$str2是$str1的子串,返回子串,返回否则false

    * 如果确定$str2是$str1的子串,推荐使用strpos(),速度更快

3.str_replace($str1, $str2, $str3, $num):子串替换,$num是替换次数

4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串


实例

<meta charset="UTF-8">
<?php 
echo '<p>字符串函数(六):查找与替换</p><hr color="green">';

$tel = '13118882888';
//1.strpos($str,$needle, $offset)查找字符串首次出现的位置
echo strpos($tel, '8'),'<br>'; //默认从头开始查找
echo strpos($tel, '8', 5),'<br>'; //从索引5开始查找

//2.strstr($str1, $str2),如果$str2是$str1的子串,返回子串,返回否则false
echo strstr($tel, '8'),'<br>';  //返回子串及后面部分
echo strstr($tel, '8', true),'<br>'; //参数true,会返回子串前面部分

echo '<hr>';
//3.str_replace($str1, $str2, $str3, $num):子串替换,
echo str_replace('131','+86-131',$tel), '<br>';

echo '<hr>';
//4.substr_replace($str1,$str2,$str3,$start, $length):替换字符串的子串
//在$str中,从第5个索引位置起的2个字符,用'pppph'进行替换
echo substr_replace($tel,'000', 5, 2), '<br>'; 
echo '此功能一般应用于隐藏重要隐私信息,如:手机号码,身份证号码','<br>';
echo substr_replace($tel,'+++++', 3, 6);

运行实例 »

点击 "运行实例" 按钮查看在线实例



Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post