PHP中常用的字符串格式化函数总结

字符串的格式化就是将字符串处理为某种特定的格式。通常用户从表单中提交给服务器的数据都是字符串的形式,为了达到期望的输出效果,就需要按照一定的格式处理这些字符串后再去使用。经常见到的字符串格式化函数如下图所示:

注意:在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式化后的新字符串。

一、取出空格和字符串填补函数

空格也是一个有效的字符,在字符串中也会占据一个位置。用户在表单输入数据时,经常在无意中会多输入一些无意义的空格。因此PHP脚本在接收到通过表单处理过来的数据时,首先处理的就是字符串中多余的空格,或者其他一些没有意义的符号。在PHP中可以通过ltrim()、rtrim()和trim()函数来完成这项工作。这三个函数的语法格式相同,但作用有所不同。他们的语法格式如下所示:

代码如下:

string ltrim(string str[,string charlist])                //从字符串左侧删除空格或其他预定义字符
string rtrim(string str[,string charlist])              //从字符串右侧删除空白字符或其他预定义字符
string trim(string str[,string charlist])              //从字符串的两端删除空白字符或其他预定义字符

这三个函数分别用于从字符串的左、右和两端删除空白字符或其他预定义字符。处理后的结果都会以新字符串的形式返回,不会在原字符串上修改。其中第一个参数str是待处理的字符串,为必选项。第二个参数charlist是过滤字符串,用于指定希望去除的特殊符号,该参数为可选。如果不指定过滤字符串,默认情况下会去掉下列字符。

★”":空格
★”0\”:NULL
★”\t”:制表符
★”\n”:新行
★”\r”:回车

此外还可以使用“..”符号指定需要去除的一个范围,例如“0..9”或“a..z”表示去掉ASCII码值中的数字和小字母。它们的使用代码如下所示:

代码如下:

<?php
$str = "123 This is a test ..."; //声明一个测试字符串,左侧为数字开头,右侧为省略号
echo ltrim($str,"0..9"); //过滤掉字符串左侧的数字,输出This is a test ...
echo rtrim($str,".") //过滤掉字符串右侧的所有“.”,输出:123 This is a test
echo trim($str,"0..9 A..Z ."); //过滤掉字符串两端的数字和大写字母还有“.”,输出:his is a test
?>

不仅可以按需求过滤掉字符串中的内容,还可以使用str_pad()函数按需求对字符串进行填补。可以用于对一些敏感信息的保护,例如数据的对并排列等。其函数的原型如下所示:

代码如下:

string str_pad(string input,int pad_length[,string pad_string[,int pad_type]])

该函数有4个参数,第一个参数指明要处理的字符串。第二个参数给定处理后字符串的长度,如果该值小于原始字符串的长度,则不进行任何操作。第三个参数指定填补时所用的字符串,它为可选参数,如果没有指定则默认使用空格填补。最后一个参数指定填补的方向,它有三个可选值:STR_PAD_BOTH、STR_PAD_LEFT和STR_PAD_RIGHT,分别代表在字符串两端、左和右进行填补。也是一个可选参数,如果没有指定,则默认值是STR_PAD_RIGHT。函数str_pad()的使用代码如下所示:

代码如下:

<?php
$str = "LAMP";
echo str_pad($str,10);         //指定长度为10,默认使用空格在右边填补“LAMP”
echo str_pad($str,10,"-="STR_PAD_LEFT);     //指定长度为10,指定在左边填补“-=-=-=LAMP”
echo str_pad($str,10,"_"STR_PAD_BOTH);     //指定长度为10,指定在左边填补“___LAMP___”
?>

二、字符串大小写的转换

在PHP中提供了4个字符串大小写的转换函数,它们都只有一个可选参数,即传入要进行转换的字符串。可以直接使用这些函数完成大小写转换的操作。函数strtoupper()用于将给定的字符串全部转换为大写字母;函数strtolower()用于将给定的字符串全部转换为小写字母;函数ucfirst()用于将给定的字符串中的首字母转换为大写,其余字符不变;函数ucwords()用于将给定的字符串中全部以空格分割的单词首字母转换为大写。下面的程序是这些函数的使用代码,如下所示:

代码如下:

<?php
$lamp = "lamp is composed of Linux 、Apache、MySQL and PHP";
echo strtolower($lamp); //输出:lamp is composed of linux、apache、mysql and php
echo strtoupper($lamp); //输出:LAMP IS CONPOSED OF LINUX、APACHE、MYSQL AND PHP
echo ucfirst($lamp); //输出:Lamp is composed of Linux 、Apache、MySQL and PHP
echo ucwords($lamp); //输出: Lamp Is Composed Of Linux 、Apache、MySQL And PHP
?>

这些函数只是按照他们说明描述的方式工作,要想确保一个字符串的首字母是大写字母,而其余的都是小写字母,就需要使用符合的方式。如下所示:

代码如下:

<?php
$lamp = "lamp is composed of Linux 、Apache、MySQL and PHP";
echo ucfirst(strtolower($lamp)); //输出:Lamp is composed of linux、apache、mysql and php
?>

三、和HTML标签相关的字符串格式化

HTML的输入表单和URL上附加资源是用户将数据提交给服务器的途径,如果不能很好地处理,就有可能成为黑客攻击服务器的入口。例如,用户在发布文章时,在文章中如果包含一些HTML格式标记或JavaScript的页面转向等代码了,直接输出显示则一定会使用页面的布局发生改变。因为这些代码被发送到浏览器中,浏览器会按有效的代码去解释。所以在PHP脚本中,对用户提交的数据内容一定要先处理。在PHP中为我们提供了非常全面的HTML相关的字符串格式化函数,可以有效地控制HTML文本的输出。

①函数nl2br()

在浏览器中输出的字符串“<br>”标记换行,而很多人习惯使用“\n”作为换行符号,但浏览器中不识别这个字符串的换行符。即使有多行文本,在浏览器中显示时也只有这一行。nl2br()函数就是在字符串中的每个新行“\n”之前插入HTML换行符“<br/>”。该函数的使用如下所示:

代码如下:

<?php
echo nl2br("One line.\nAnother line."); //在“\n”前加上“<br/>”标记
/*输出以下两行结果
One line.<br/>
Another line.
*/
?>

②函数htmlspecialchars()

如果不希望浏览器直接解析HTML标记,就需要将HTML标记中的特殊字符转换成HTML实体。例如,将“<”转换为“<”,将“>”转换为“>”。这样HTML标记浏览器就不会去解析,而是将HTML文本在浏览器中原样输出。PHP中提供的htmlspecialchars()函数就可以将一些预定义的字符串转换为HTML实体。此函数用在预防使用者提供的文字中包含了HTML的标记,像是布告栏或是访客留言板这方面的应用。以下是该函数可以转换的字符:

★“&”(和号)转换为“&”。
★“””(双引号)转换为“"”。
★“'”(单引号)转换为“'”。
★“<”(小于)转换为“<”。
★“>”(大于)转换为“>”。

该函数的原型如下:

代码如下:

string htmlspecialchars(string string [,int quote_style[,string charset]])

该函数中第一个参数是带有HTML标记待处理的字符串。第二个参数用来决定引号的转换方式。默认值为ENT_COMPAT将只转换双引号,而保留单引号;ENT_QUOTES将同时转换这两种引号;而ENT_NOQUOTES将不对引号进行转换。第三个参数用于指定所处理字符串的字符集,默认的字符集是“ISO88511-1”。

代码如下:

<html>
<body>
<?php
$str = "<B>WebServer:</B> & 'Linux' & 'Apache'"; //将有HTML标记和单引号的字符串
echo htmlspecialchars($str,ENT_COMPAT); //转换HTML标记和转换双引号
echo "<br>\n";
echo htmlspecialchars($str,ENT_QUOTES); //转换HTML标记和转换两种引号
echo "<br>\n";
echo htmlspecialchars($str,ENT_NOQUOTES); //转换HTML标记和不对引号转换
echo "<br>\n";
?>
</body>
</html>

在浏览器中的输出结果

代码如下:

<B>WebServer:</B> & ‘Linux' & ‘Apache'
<B>WebServer:</B> & ‘Linux' & ‘Apache'
<B>WebServer:</B> & ‘Linux' & ‘Apache'

如果在浏览器中查看源代码,会看到如下结果:

代码如下:

<html>
<body>
<B>WebServer:</B>&'Linux'&'Apache'<br> //没有转换单引号
<B>WebServer:</B>&'Linux'&'Apache'<br>
<B>WebServer:</B>&'Linux'&'Apache' //没有转换单引号
</body>
</html>

在PHP中还提供了htmlentities()函数,可以将所有的非ASCII码字符转换为对应的实体代码。该函数与htmlspecialchars()函数的使用语法格式一致,该函数可以转义更多的HTML字符。下面的代码为htmlentities()函数的使用范例:

代码如下:

<?php
$str = "一个'quote'是<b>bold</b>";
//输出&0qrave;»¸ö 'quote' ÊÇ <b> &lt:b>bold</b>
echo htmlentities($str);
//输出:一个'quote' 是 <b>bold</b>
echo htmlentities($str,ENT_QUOTES,gb2312);
?>

在处理表单中提交的数据时,不仅要通过前面介绍的函数将HTML的标记符号和一些特殊字符转换为HTML实体,还需要对引号进行处理。因为被提交的表单数据中的“'”、“””和“\”等字符前将自动加上一个斜线“\”。这是由于PHP配置文件php.ini中的选项magic_quotes_gpc在起作用,默认是打开的,如果不关闭它则要使用函数stripslashes()删除反斜线。如果不处理,将数据保存到数据库中时,有可能会被数据库误当成控制符号而引起错误。函数stripslashes()只有一个被处理字符串作为参数,返回处理后的字符串。通常使用htmlspecialchars()函数与stripslashes()函数复合的方式,联合处理表单中提交的数据。

函数stripslashes()的功能是去掉反斜线“\”,如果有连续两个反斜线,则只去掉一个。与之对应的是另一个函数addslashes(),正如函数名所暗示的,它将在“'”、“””、“\”和NULL字符等前增加必要的反斜线。

函数htmlspecialchars()是将函数HTML中的标记符号转换为对应的HTML实体,有时直接删除用户输入的HTML标签,也是非常有必要的。PHP中提供的strip_tags()函数默认就可以删除字符串中所有的HTML标签,也可以有选择性地删除一些HTML标记。如布告栏或是访客留言板,有这方面的应用是相当必要的。例如用户在论坛中发布文章时,可以预留一些可以改变字体大小、颜色、粗体和斜体等的HTML标记,而删除一些对页面布局有影响的HTML标记。函数strip_tags()的原型如下所示:

代码如下:

string strip_tags(string str[,string allowable_tags]); //删除HTML的标签函数

该函数有两个参数,第一个参数提供了要处理的字符串,第二个参数是一个可选的HTML标签列表,放入该列表中的HTML标签将被保留,其他的则全部被删除。默认将所有HTML标签都删除。下面的程序为该函数的使用范围,如下所示:

代码如下:

<?php
$str = "<font color='red' size=7>Linux</font> <i>Apache</i> <u>Mysql</u> <b>PHP</b>";
echo strip_tags($str); //删除了全部HTML标签,输出:Linux Apache Mysql PHP
echo strip_tags($str,"<font>"); //输出<font color='red' size=7>Linux</font>Apache Mysql PHP
echo strip_tags($str,"<b><u><i>"); //输出Linux <i>Apache</i> <u>Mysql</u> <b>PHP</b>
?>

四、其他字符串格式化函数

字符串的格式化处理函数还有很多,只要是想得到所需要格式化的字符串,都可以调用PHP中提供的系统函数处理,很少需要自己定义字符串格式化函数。

①函数strrev()

该函数的作用是将输入的字符串反转,只提供一个要处理的字符串作为参数,返回翻转后的字符串。如下所示:

代码如下:

<?php
echo strrev("http://www.lampbrother.net"); //反转后输出:ten.rehtorbpmal.www//:ptth
?>

②函数number_format()

number_format()函数通过千位分组来格式化数字。该函数如下所示:

代码如下:

string number_format(float number[,int decimals[,string dec_point,string thousands_sep]])

代码如下:

<?php
$number = 123456789;
echo number_format($number);      //输出:123,456,789千位分隔的字符串
echo number_format($number,2);       //输出:123,456,789.00小数点后保留两位小数
echo number_format($number,2,",",".");       //输出123.456.789,00千位使用(.)分隔了,并保留两位小数
?>

③函数md5()

随着互联网的普及,黑客攻击已成为网络管理者的心病。有统计数据表明70%的攻击来自内部,因此必须采取相应的防范措施来扼制系统内部的攻击。防止内部攻击的重要性还在于内部人员对数据的存储位置、信息重要性非常了解,这使得内部攻击更容易奏效。攻击者盗用合法用户的身份信息,以仿冒的身份与他人进行通信。所以在用户注册时应该先将密码加密后再添加到数据库中,这样就可以防止内部攻击者直接查询数据库中的授权表,盗用合法用户的身份信息。

md5()函数的作用就是将一个字符串进行MD5算法加密,默认返回一个32位的十六进制字符串。

代码如下:

<?php
$password = "lampbrother";
echo md5($password)."<br>";
 
//将输入的密码和数据库保存的匹配
if(md5($password) == '5f1ba7d4b4bf96fb8e7ae52fc6297aee'){
echo "密码一致,登录成功";
}
?>

在PHP中提供了一个对文件进行MD5加密的函数md5_file(),使用的方式和md5()函数相似。

(0)

相关推荐

  • 解析php获取字符串的编码格式的方法(函数)

    如果不清楚字符串的编码格式的话,就可以将这段字符这样检查:$encode = mb_detect_encoding($string, array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′)); echo $encode;这样就能知道它是什么编码的了.后续操作还可以为其转码:if ($encode == "UTF-8″){$string = iconv("UTF-8″,"GBK",$s

  • php中利用explode函数分割字符串到数组

    分割字符串 //利用 explode 函数分割字符串到数组 复制代码 代码如下: <?php $source = "hello1,hello2,hello3,hello4,hello5";//按逗号分离字符串 $hello = explode(',',$source); for($index=0;$index<count($hello);$index++) { echo $hello[$index];echo "</br>"; } ?>

  • php字符串分割函数explode的实例代码

    array explode (string $separator, string $string [, int $limit]) 该函数有3个参数,第一个参数$separator设置一个分割字符(串).第二个参数$string指定所要操作的字符串.$limit参数是可选的,指定最多将字符串分割为多少个子串.该函数返回一个由被分割的子串组成的数组. 来看下面的例子,对一个由逗号分隔的多行文本数据进行分析.例1,分割字符串. 复制代码 代码如下: <?php$this_year = 2013;$te

  • php strstr查找字符串中是否包含某些字符的查找函数

    PHP 判断字符串是否包含其它字符 以下几个函数均可用来判断某字符串是否包含另外一个字符串PHP 中判断一个字符串是否包含其它字符是很常见的操作. 虽然很简单,但还是写了几个函数,质量可能不是很高,权当锻炼. 如果这几个函数恰好能帮上你的忙,我将会很高兴的.这几个函数中,我比较喜欢第四个... 复制代码 代码如下: <?php /** * 以下几个函数均可用来判断某字符串是否包含另外一个字符串 * PHP 中判断一个字符串是否包含其它字符是很常见的操作. * 虽然很简单,但还是写了几个函数,质量

  • PHP字符转义相关函数小结(php下的转义字符串)

    文章中有不正确的或者说辞不清的地方,麻烦大家指出了--- 与PHP字符串转义相关的配置和函数如下: 1.magic_quotes_runtime 2.magic_quotes_gpc 3.addslashes()和stripslashes() 4.mysql_escape_string() 5.addcslashes()和stripcslashes() 6.htmlentities() 和html_entity_decode() 7.htmlspecialchars()和htmlspecialc

  • php常用字符串String函数实例总结【转换,替换,计算,截取,加密】

    本文实例总结了php常用字符串String函数.分享给大家供大家参考,具体如下: nl2br 功能:化换行符为<br> <?php $str = "cat isn't \n dog"; $result = nl2br($str); echo $result; /**结果 cat isn't dog */ rtrim 功能:清除右边的空白 <?php $str = "Hello world "; echo strlen($str)."

  • PHP产生随机字符串函数

    <?php /**   * 产生随机字符串   *   * 产生一个指定长度的随机字符串,并返回给用户   *   * @access public   * @param int $len 产生字符串的位数   * @return string   */   function randStr($len=6) {   $chars='ABDEFGHJKLMNPQRSTVWXYabdefghijkmnpqrstvwxy23456789#%*'; // characters to build the 

  • php 常用字符串函数总结

    1.格式化输出 chop 是rtrim()的别名: ltrim() trim() nl2br()将\n转换成<br> print,echo,printf(),sprintf(): echo()不是函数,print()是函数,有返回值,boolen,false,true: printf()格式化输出 --函数,把文字格式化以后输出,直接调用系统调用进行IO的,他是非缓冲的.如: $name="hunte"; $age=25; printf("my name is %

  • Thinkphp模板中截取字符串函数简介

    在php中截取字符串的函数有很多,而在thinkphp中也可以直接使用php的函数,本文给大家简单的介绍thinkPHP模板中截取字符串的具体用法,希望能对各位有所帮助. 对于英文字符可使用如下形式: 复制代码 代码如下: {$vo.title|substr=0,5} 如果是中文字符thinkphp提供了msubstr,用法如下: 复制代码 代码如下: function msubstr($str, $start=0, $length, $charset="utf-8″, $suffix=true

  • PHP开发中常用的字符串操作函数

    1,拼接字符串 拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号.=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行定义,这样做是比较有好处的. 2,替换字符串 在PHP这门语言中,提供了一个名字叫做substr_replace()的函数,该函数的作用可以快速的完成扫描和编辑文本内容较多的字符串替换功能.他的语法格式: mixed substr_replace(mixed $string,string $repl

  • PHP反转字符串函数strrev()函数的用法

    呵呵,好玩吧,一真的想做一个函数百科网,只是由于我的精力有限了,只写WEB开发笔记,一天一篇文章的更新就已经够忙了,因为,我的职业也不只是写这一个博客,还有其它很多网站需要维护,天天就是写软文,发原创,真够累的,好了,以后有机会,我还是要把函数百科网做起来,希望大家支持. 定义和用法 strrev() 函数反转字符串. 语法 strrev(string) 参数 描述 string 必需.规定要反转的字符串. 例子 复制代码 代码如下: <?php echo strrev("Hello Wo

  • PHP 查找字符串常用函数介绍

    一.strstr - 查找字符串的首次出现 string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 注1:$haystack是当事字符串,$needle是被查找的字符串.该函数区分大小写. 注2:返回值是从needle开始到最后. 注3:关于$needle,如果不是字符串,被当作整形来作为字符的序号来使用. 注4:before_needle若为true,则返回前东西. 复制代码 代码如

随机推荐