PHP入门

常用字符串处理函数

此课程是收费课程,请先购买或加入会员后再访问。

[TOC]

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

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

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

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

例子
```php
$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()       //已空格分隔字符串首字母,都转为大写

例子
```php
$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


HTML表单



请输入一个字符串:



<?php
if(isset($_POST["submit"])) { //如果用户提交表单下面代码将被执行
//输出原型this is a \"test\",浏览器对其解析
echo "原型输出:".$_POST['str']."
";

    //转换为实体:<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));
}
?>



```

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

下面看一个直接删除html标签的函数
```php
//删除html标签
string strip_tags(string str [, string allowalble_tags])

$str="Linux Apache Mysql PHP";

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

//输出Linux Apache Mysql PHP
echo strip_tags($str, "");

// 输出Linux Apache Mysql PHP
echo strip_tags($str, "");
```

字符串比较函数

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

例子
```php
$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 "两个字符串相等
";
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");