一、trim、ltrim和rtrim
trim() 函数从字符串的两端删除空白字符和其他预定义字符。string trim ( $str [, $charlist = ” tnr x0B” ] )
参数 | 描述 |
---|---|
string | 必需。规定要检查的字符串。 |
charlist | 可选。规定从字符串中删除哪些字符。如果被省略,则移除以下所有字符: – “\0” – NULL – “\t” – 制表符 – “\n” – 换行 – “\x0B” – 垂直制表符 – “\r” – 回车 – ” ” – 空格 |
示例1:
// Remove numerals and space from the beginning of the line
print ltrim('10 PRINT A$',' 0..9');
// Remove semicolon from the end of the line
print rtrim('SELECT * FROM turtles;',';');
输出结果:
PRINT A$
ELECT * FROM turtles
示例2:
<?php
function trim_value(&$value)
{
$value = trim($value);
}
$fruit = array('apple','banana ', ' cranberry ');
var_dump($fruit);
array_walk($fruit, 'trim_value');
var_dump($fruit);
?>
同样,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:
<?php
setlocale (LC_COLLATE, 'NL');
echo strcoll("Hello World!","Hello WORLD!");
echo "<br />";
setlocale (LC_COLLATE, 'en_US');
echo strcoll("Hello World!","Hello WORLD!");
?>
输出
-1
1
例2:
<?php
echo strcmp("Hello world!","Hello world!");
?>
输出 0
参数 | 描述 |
---|---|
string1 | 必需。规定要比较的第一个字符串。 |
string2 | 必需。规定要比较的第二个字符串。 |
startpos | 可选。规定在 string1 中的何处开始比较。 |
length | 可选。规定在 string1 中参与比较的字符数。 |
case | 可选。规定是否指定大小写比较。默认是 FALSE (对大小写敏感)。 |
示例:
<?php
echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "de", -2, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // warning
?>
三、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里的可选参数并未列举完,只列出了三个常用的。其他参数请看官方文档。
示例:
<?php
$str = "A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?>
<?php
$str = "x8F!!!";
// Outputs an empty string
echo htmlentities($str, ENT_QUOTES, "UTF-8");
// Outputs "!!!"
echo htmlentities($str, ENT_QUOTES | ENT_IGNORE, "UTF-8");
?>
例2:
<?php
$orig = "I'll "walk" the <b>dog</b> now";
$a = htmlentities($orig);
$b = html_entity_decode($a);
echo $a; // I'll "walk" the <b>dog</b> now
echo $b; // I'll "walk" the <b>dog</b> now
?>
2、htmlspecialchars和htmlspecialchars_decode
语法结构:
htmlspecialchars_decode / htmlspecialchars(string,quotestyle,character-set)
预定义的会被解码的HTML实体是:
& 成为 & (和号)
" 成为 " (双引号)
' 成为 ' (单引号)
< 成为 < (小于)
> 成为 > (大于)
参数:
参数 | 描述 |
---|---|
string | 必需。规定要解码的字符串。 |
quotestyle | 可选。规定如何解码单引号和双引号。 ENT_COMPAT – 默认。仅解码双引号。 ENT_QUOTES – 解码双引号和单引号。 ENT_NOQUOTES – 不解码任何引号。 |
示例:
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
<?php
$str = "<p>this -> "</p>n";
echo htmlspecialchars_decode($str);
// 注意,这里的引号不会被转换
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>
3、strip_tags
语法:strip_tags(string,allow)
参数:
参数 | 描述 |
---|---|
string | 必需。规定要检查的字符串。 |
allow | 可选。规定允许的标签。这些标签不会被删除。 |
注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "n";
// 允许 <p> 和 <a>
echo strip_tags($text, '<p><a>');
?>
其输出为:
Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>