PHP学习之--字符串与正则表达式

字符串

字符串格式化

整理字符串的第一步是清理字符串中多余的空格。虽然这一部操作不是必需的,但如果要将字符串存入一个文件或数据库中,或者将它和别的字符串进行比较,这就是非常有用的 。

chop(string)

函数移除字符串后面多余的空白,包括新行。

ltrim(string)

函数移除字符串起始处多余空白。

rtrim(string)

函数移除字符串后面多余的空白,包括新行,此函数是 chop()的别名。

trim(string)

函数移除字符串两边多余的空白。

nl2br(string)

函数将字符串作为输入参数,用XHTML 中的<br />标记代替字符串中的换行符

htmlentities(string)将字符转换成HTML

<?php
$str="<strong>吴起</strong>";
echo $str."<br>";//吴起
echo htmlentities($str);//<strong>吴起</strong>
?>

htmlspecialchars(string)将特殊字符转换成HTML

<?php
$str="<strong>吴起</strong>";
echo $str."<br>";//吴起
echo htmlspecialchars($str);//<strong>吴起</strong>
?>

strip_tags(string)去掉HTML

<?php
$str="<strong>吴起</strong>";
echo $str."<br>";//吴起
echo strip_tags($str);//吴起
?>

字符串插入到数据库中需要注意事项

对于字符串来说,某些字符肯定是有效的,但是当将数据插入到数据库中的时候可能会 引起一些问题,因为数据库会将这些字符解释成控制符。这些有问题的字符就是引号(单引 号和双引)、反斜杠(\)和 NULL 字符。
PHP 提供了两个专门用于转义字符串的函数。在将任何字符串写到数据库之前,应该
使用 addslashes()将它们重新格式化,
在调用了addslashes(str,charlist)后,所有charlist都加了斜杠,
stripslashes()函数去掉了这些斜杠 。

strtoupper(string)

函数将字符串转换为大写

strtolower(string)

函数将字符串转换成小写

ucfirst(string)

函数将第一个字母转换为大写

ucwords(string)

函数将每个单词第一个字母转换为大写

str_pad()

将字符串用指定个数的字符填充字符串

explode(str1,str2)

使用第一个字符串切割第二个字符串

<?php
$str="Is your name reilly";
print_r(explode(' ',$str));
//Array ( [0] => Is [1] => your [2] => name [3] => reilly )
?>

implode(str1,array),join(str1,array)

使用第一个字符连接第二个数组

<?php
$str="Is your name reilly";
$arr=explode(' ',$str);

echo join(' ',$arr);
//Is your name reilly
?>

strtok()函数

一次只从字符串取出一些片段(称为令牌)。对于一次从字符串中取出一个 单词的处理来说,strtok()函数比 explode()函数的效果更好。

<?php
$str = "I,will.be#back";
$tok = strtok($str,",.#");
while($tok) {
echo "$tok<br \>";
$tok = strtok(",.#");
}
//I
//will
//be
//back
?>

substr(string,start,[length])

返回子串

str_split(string,[length])

返回数组,每个元素长度为length

strrev(string)

将一个字符串逆转过来

strcmp(str1,str2)

字符串进行比较,如果str1>str2返回1,如果str1<str2返回-1,如果str1==str2返回0

strcasecmp(str1,str2)

效果同上,不过不区分大小写

strspn(str1,str2)

函数返回一个字符串中包含有另一个字符串中字符的第一部分的长度。也 就是求两个字符串之间相同的部分。

strlen(string)

返回字符串的长度

返回子字符串needle 在字符串 haystack 中出现的次数。注意 needle 区分大小写


int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )

查找替换字符串

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

<?php
echo strstr('yc60.com@gmail.com','@');
//@gmail.com
?>

stristr()同上,区别是不区分大小写

strpos()和 strrpos()的操作和 strstr()类似

但它不是返回一个子字符串,而返回子字 符串 needle 在字符串 haystack 中的位置。
mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

返回字符串 haystack 中 needle 最后一次出现的数字位置。

注意 PHP4 中,needle 只能为单个字符。如果 needle 被指定为一个字符串,那么将仅使用第一个字符。
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

str_replace(str1,str2,str3);

//第一个参数表示要查找的字符串,第二个参数表示要替换的字符串,第三个参数表示表示原来被替换的字符串

<?php
echo str_replace('Lee','Wq','this is Lee');
//this is Wq
?>

str_ireplace()同上,不区分大小写

substr_replace(string,repalce,start,length)替换字符串的子串

第一个参数目标串,第二个参数,拿来替换的字符串,第三个参数目标串替换部分下标,第四个参数长度.

字符串中文需要注意事项

对于以上的字符串函数,有些可以用于中文,但有些却不适用中文。所以,PHP 提供
了专门的函数来解决这样的问题。mb_开头

mb_strlen() 对应的函数为 strlen() 求字符串的长度
mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
mb_strstr() 对应的函数为 strstr() 求某字符串到结尾的字符
mb_strpos() 对应的函数为 strpos() 求出字符最先出现处
mb_substr() 对应的函数为 substr() 取出指定的字符串
mb_substr_count() 对应函数为 substr_str() 返回字符串出现的次数

正则表达式

Perl 一直被认为是最伟大的解析语言之一,它提供了一种全面的正则表达式,即使是最 复杂的字符串模式,也可以用这种正则表达式语言搜索和替换。PHP 开发人员认识到,与 其重新发明正则表达式,不如让 PHP 用户直接使用声名赫赫的 Perl 正则表达式语言,即Perl 风格的函数。

preg_match(regstring,string);

第一个个参数表示匹配模式,第二个表示字符串,
返回值,存在返回1,不存在返回0;

preg_grep(regstring,array);

第一个参数表示匹配模式,第二个参数是数组
返回匹配的子数组

preg_match_all(regstring,string,outArray);

第一个参数表示匹配模式,第二个参数字符串,第三个参数用来存放匹配的子字符串

preg_quote(stirng)

在每个对于正则表达式语法而言有特殊含义的字 符前插入一个反斜线。这些特殊字符包含:$ ^ * () + = {} [] | \ : <>。

<?php
echo preg_quote('PHP的价格是:$150');
//PHP的价格是:\$150
?>

preg_replace(regString,replaceString,string)

函数搜索到所有匹配,然后替换成想要的字符串返 回出来。
第一个参数存放匹配模式,第二个参数存放用来替换的字符串,第三个参数字符串
返回替换后的字符串

<?php
echo preg_replace('/php[1-6]/','python','This is a php5,This is a php4');
//This is a python,This is a python
?>
<?php
$string = 'This is a [b]php5[/b],This is a [b]php4[/b]';
$replace='<strong>pipei</strong>';
$mode='/\[b\](.*)\[\/b\]/U';
echo preg_replace($mode, $replace, $string);
//This is a <strong>pipei</strong>,This is a <strong>pipei</strong>
?>

preg_split(regString,string);

通过正则表达式分割
返回分割的数组
第一个参数是模式,第二个参数是字符串

正则表达式函数小结

目前为 PHP使用POSIX风格的正则表达式搜索字符串提供了7 个函数,包括: ereg() 、 ereg_replace()、eregi()、eregi_replace()、split()、spliti()和 sql_regcase()。
PS:和 Perl 风格基本相同,可以参考手册自行学习

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值