一、trim、ltrim和rtrim

trim() 函数从字符串的两端删除空白字符和其他预定义字符。string trim ( $str [, $charlist = ” tnr x0B” ] )

参数 描述
string 必需。规定要检查的字符串。
charlist 可选。规定从字符串中删除哪些字符。如果被省略,则移除以下所有字符: – “\0” – NULL – “\t” – 制表符 – “\n” – 换行 – “\x0B” – 垂直制表符 – “\r” – 回车 – ” ” – 空格

示例1:

1// Remove numerals and space from the beginning of the line
2print ltrim('10 PRINT A$',' 0..9');
3// Remove semicolon from the end of the line
4print rtrim('SELECT * FROM turtles;',';');
5输出结果:
6PRINT A$
7ELECT * FROM turtles

示例2:

 1<?php
 2function trim_value(&$value)
 3{
 4    $value = trim($value);
 5}
 6$fruit = array('apple','banana ', ' cranberry ');
 7var_dump($fruit);
 8array_walk($fruit, 'trim_value');
 9var_dump($fruit);
10?>

同样,ltrim()和rtrim()两个函数的用法和trim()的用法一样,不同的是,ltrim() – 删除字符串开头的空白字符(或其他字符),rtrim() – 删除字符串末端的空白字符(或者其他字符)。

注:功能类似的还有str_replace() - 子字符串替换函数。

二、strcoll、strcmp、substr_compare

1、strcoll、strcmp两个函数都用于字符串的比较。语法也相同 strcoll(string1,string2) 和 strcmp(string1,string2) 。

2、两个函数的返回值也相同,如果两个字符串相等返回0 , 如果 string1 小于 string2返回< 0 , 如果 string1 大于 string2 则返回 >0 。

3、两个函数对比时都对大小写敏感 。

4、两都不同的是,strcoll函数不是二进制安全的。strcoll()会依环境变量LC_COLLATE所指定的文字排列次序来比较字符串,而strcmp是根据ASCII来比较字符串。 若LC_COLLATE为”POSIX”或”C”,则strcoll()与strcmp()作用完全相同。

例1:

 1<?php
 2setlocale (LC_COLLATE, 'NL');
 3echo strcoll("Hello World!","Hello WORLD!");
 4echo "<br />";
 5setlocale (LC_COLLATE, 'en_US');
 6echo strcoll("Hello World!","Hello WORLD!");
 7?>
 8输出
 9-1
101

例2:

1<?php
2echo strcmp("Hello world!","Hello world!");
3?>
4输出 0
参数 描述
string1 必需。规定要比较的第一个字符串。
string2 必需。规定要比较的第二个字符串。
startpos 可选。规定在 string1 中的何处开始比较。
length 可选。规定在 string1 中参与比较的字符数。
case 可选。规定是否指定大小写比较。默认是 FALSE (对大小写敏感)。

示例:

1<?php
2echo substr_compare("abcde", "bc", 1, 2); // 0
3echo substr_compare("abcde", "de", -2, 2); // 0
4echo substr_compare("abcde", "bcg", 1, 2); // 0
5echo substr_compare("abcde", "BC", 1, 2, true); // 0
6echo substr_compare("abcde", "bc", 1, 3); // 1
7echo substr_compare("abcde", "cd", 1, 2); // -1
8echo substr_compare("abcde", "abc", 5, 1); // warning
9?>

三、htmlentities、html_entity_decode、htmlspecialchars、htmlspecialchars_decode、strip_tags

先比较一下几者的功能,以免越看越糊涂。

htmlentities() 函数把字符转换为 HTML 实体,html_entity_decode() 函数把 HTML 实体转换为字符。所以html_entity_decode() 是 htmlentities() 的反函数。

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体,htmlspecialchars_decode() 函数把一些预定义的 HTML 实体转换为字符。两者之间也是反函数。

strip_tags() 函数是用来剥去 HTML、XML 以及 PHP 的标签。

1、htmlentities、html_entity_decode

htmlentities / html_entity_decode(string,quotestyle,character-set)

具体的参数含义如下:

参数 描述
string 必需。规定要转换的字符串。
quotestyle 可选。规定如何编码单引号和双引号。ENT_COMPAT – 默认。仅编码双引号。ENT_QUOTES – 编码双引号和单引号。ENT_NOQUOTES – 不编码任何引号。
character-set 可选。字符串值,规定要使用的字符集。 ISO-8859-1 – 默认。西欧。无法被识别的字符集将被忽略,并由 ISO-8859-1 代替。 ISO-8859-15 – 西欧(增加 Euro 符号以及法语、芬兰语字母)。 UTF-8 – ASCII 兼容多字节 8 比特 Unicodecp866 – DOS 专用 Cyrillic 字符集 cp1251 – Windows 专用 Cyrillic 字符集 cp1252 – Windows 专用西欧字符集 KOI8-R – 俄语 GB2312 – 简体中文,国家标准字符集 BIG5 – 繁体中文 BIG5-HKSCS – Big5 香港扩展 Shift_JIS – 日语 EUC-JP – 日语

注:以上quotestyle里的可选参数并未列举完,只列出了三个常用的。其他参数请看官方文档

示例:

 1<?php
 2$str = "A 'quote' is <b>bold</b>";
 3// Outputs: A 'quote' is <b>bold</b>
 4echo htmlentities($str);
 5// Outputs: A 'quote' is <b>bold</b>
 6echo htmlentities($str, ENT_QUOTES);
 7?>
 8<?php
 9$str = "x8F!!!";
10// Outputs an empty string
11echo htmlentities($str, ENT_QUOTES, "UTF-8");
12// Outputs "!!!"
13echo htmlentities($str, ENT_QUOTES | ENT_IGNORE, "UTF-8");
14?>

例2:

1<?php
2$orig = "I'll "walk" the <b>dog</b> now";
3$a = htmlentities($orig);
4$b = html_entity_decode($a);
5echo $a; // I'll "walk" the <b>dog</b> now
6echo $b; // I'll "walk" the <b>dog</b> now
7?>

2、htmlspecialchars和htmlspecialchars_decode

语法结构:

htmlspecialchars_decode / htmlspecialchars(string,quotestyle,character-set)

预定义的会被解码的HTML实体是:

1& 成为 & (和号)
2" 成为 " (双引号)
3' 成为 ' (单引号)
4< 成为 < (小于)
5> 成为 > (大于)

参数:

参数 描述
string 必需。规定要解码的字符串。
quotestyle 可选。规定如何解码单引号和双引号。 ENT_COMPAT – 默认。仅解码双引号。 ENT_QUOTES – 解码双引号和单引号。 ENT_NOQUOTES – 不解码任何引号。

示例:

 1<?php
 2$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
 3echo $new; // <a href='test'>Test</a>
 4?>
 5<?php
 6$str = "<p>this -> "</p>n";
 7echo htmlspecialchars_decode($str);
 8// 注意,这里的引号不会被转换
 9echo htmlspecialchars_decode($str, ENT_NOQUOTES);
10?>

3、strip_tags

语法:strip_tags(string,allow)

参数:

参数 描述
string 必需。规定要检查的字符串。
allow 可选。规定允许的标签。这些标签不会被删除。

注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。

 1<?php
 2$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
 3echo strip_tags($text);
 4echo "n";
 5// 允许 <p> 和 <a>
 6echo strip_tags($text, '<p><a>');
 7?>
 8
 9其输出为:
10Test paragraph. Other text
11<p>Test paragraph.</p> <a href="#fragment">Other text</a>