[TOC]

去除空格和字符串填补函数

//从左侧删除空格或其他预定义字符
string ltrim(string str [, string charlist])

//从右侧删除空格或其他预定义字符
string rtrim(string str [, string charlist])

//从两侧删除空格或其他预定义字符
string trim(string str [, string charlist])

例子

$str = "   lanmp  ";
echo strlen($str);  //输出字符串总长度
echo ltrim($str);
echo rtrim($str);
echo trim($str);

$str = "123 This is a test..."
echo ltrim($str, "0..9");   //去掉左侧所有0..9的数字
echo rtrim($str, ".");      //去右侧的点
echo trim($str, "0..9 A..Z");   //去掉两侧的数字和大写字母

字符串大小写转换

strtoupper()    //将字符串全部转换为大写
strtolower()    //将字符串全部转为小写
ucfirst()       //首字母大写
ucwords()       //已空格分隔字符串首字母,都转为大写

例子

$str = "lnmp is composed of Linux Nginx Mysql PHP Python"

echo strtoupper($str)
echo strtolower($str)
echo ucfirst($str)
echo ucwords($str)

echo ucfirst(strtolower($str))      //只有首字母大写

与HTML标签相关的字符串格式化

nl2br()     //将\n替换成<br />
echo nl2br("one line.\nAnother line.");


/**
* 将html标记转为html实体,即过滤html代码中的特殊标记
* 例如将"<" 转成"&", "号转成"""
*/
htmlspecialchars()

echo "<b>hello php</b>";
echo htmlspecialchars("<b>hello php</b>");

//将html实体转成html标记
htmlspecialchars_decode()

使用PHP过滤表单输入的数据

如果php.ini中开启了magic_quotes_gpc,那么表单提交的数据,会自动给 ' / "\等字符前面加上\转义操作.

如果不需要,可以使用stripslashes()删除\转义符

例子

<html>
<head>
    <title>HTML表单</title>
    <meta charset="utf-8" />
</head>

<body>
    <form action="" method="post">
        请输入一个字符串:
        <input type="text" size="30" name="str" value="<?php echo html2Text($_POST['str']) ?>">
        <input type="submit" name="submit" value="提交"><br>
    </form>
    <?php
    if(isset($_POST["submit"])) {      //如果用户提交表单下面代码将被执行
        //输出原型<b><u>this is a \"test\"</u></b>,浏览器对其解析
        echo "原型输出:".$_POST['str']."<br>";

        //转换为实体:<b><u>this is a \"test\"</u></b>
        echo "转换实例:".htmlspecialchars($_POST['str'])."<br>";

        //删除引号前面的斜线:<b><u>this is a "test"</u></b><br>
        echo "删除斜线:".stripslashes($_POST['str'])."<br>";

        //输出:<b><u>this is a "test"</u></b>
        echo "删除斜线和转换实体:".html2Text($_POST['str'])."<br>";
    }

    //自定一个函数,复合的方式处理表单提交的数据
    function html2Text($input) {
        //返回两个函数结合处理的字符串
        return htmlspecialchars(stripslashes($input));
    }
    ?>
</body>
</html>

注意: 如果没有开启magic_quotes_gpc,需要在提交的数据的特殊字符上加上\转义,那么可以使用addslashes()函数

下面看一个直接删除html标签的函数

//删除html标签
string strip_tags(string str [, string allowalble_tags])

$str="<font color='red' size=7>Linux</font> <i>Apache</i> <u>Mysql<u> <b>PHP</b>";

//删除了全部HTML标签, 输出:Linux Apache Mysql PHP
echo strip_tags($str);

//输出<font color='red' size=7>Linux</font> Apache Mysql PHP
echo strip_tags($str, "<font>");

// 输出Linux <i>Apache</i> <u>Mysql<u> <b>PHP</b>
echo strip_tags($str, "<b><u><i>");

#字符串比较函数

/**
* return 0 相等
* return 1 str1>str2
* return -1 str1<str2
*/
int strcmp(string str1, string str2)    //区分大小写
int strcasecmp(string str1, string str2)//不区分大小写

例子

$userName="Admin";
$password="whphp";

//不区分大小写的比较,如果两个字符串相等返回0
if(strcasecmp($userName, "admin")==0) {
    echo "用户名存在";
}
//将两个比较的字符串使用相应的函数转成全大写或全小写后,也可以实现不区分大小写的比较
if(strcasecmp(strtolower($userName), strtolower("admin"))==0) {
    echo "用户名存在";
}

//区分字符串中字母的大小写比较
switch(strcmp($password, "whphp"))
{
    //两个字符串相等则返回0
    case 0:
        echo "两个字符串相等<br>";
        break;

    //第一个字符串大时则返回1
    case 1:
        echo "第一个字符串大于第二个字符串<br>";
        break;
    //第一个字符串小时则返回-1
    case -1:
        echo "第一个字符串小于第二个字符串<br>";
}

#substr()字符串截取

string substr ( string $string , int $start [, int $length ] )

string 输入字符串。

start 如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。

如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。

如果 string 的长度小于或等于 start,将返回 FALSE。

$rest = substr("abcdef", -1);    // 返回 "f"
$rest = substr("abcdef", -2);    // 返回 "ef"
$rest = substr("abcdef", -3, 1); // 返回 "d"

length

如果提供了正数的 length,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。

如果提供了负数的 length,那么 string 末尾处的许多字符将会被漏掉(若 start 是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回一个空字符串。

如果提供了值为 0,FALSE 或 NULL 的 length,那么将返回一个空字符串。

如果没有提供 length,返回的子字符串将从 start 位置开始直到字符串结尾。

$rest = substr("abcdef", 0, -1);  // 返回 "abcde"
$rest = substr("abcdef", 2, -1);  // 返回 "cde"
$rest = substr("abcdef", 4, -4);  // 返回 ""
$rest = substr("abcdef", -3, -1); // 返回 "de"

其他字符串格式化函数

/**
* 字符串反转
*/
strrev()
echo strrev("http://www.whphp.com");

/**
* 数字格式化
*/
string number_format( float number [,int decimals[, string dec_point, string thousands_sep]])

$number=123456789;
//输出123,456,789千位分隔的字符串
echo number_format($number);

//输出123,456,789.00小数点后保留两数小数
echo number_format($number, 2);

//输出123.456.789,00 千位使用(,)分隔并保留两位小数
echo number_format($number, 2, ",", ".");

/**
* md5编码
*/
//第二个参数,默认为false,返回32位编码, 如果设为true,则返回16位编码
string md5(string str [,bool raw_output])

echo md5("whphp");