php字符串函数(三)

2014年1月28日 发表评论 阅读评论

一、trim、ltrim和rtrim

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

参数 描述
string 必需。规定要检查的字符串。
charlist 可选。规定要转换的字符串。如果省略该参数,则删除以下所有字符:

  • "" - NULL
  • "t" - tab
  • "n" - new line
  • "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

substr_compare() 函数从指定的开始长度比较两个字符串。返回结果和上面两个函数一样不过其可以指定比较的位置,语法规则为:substr_compare(string1,string2,startpos,length,case)

参数 描述
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 比特 Unicode
  • cp866 - 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 &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);
// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
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 &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now
echo $b; // I'll "walk" the <b>dog</b> now
?>

2、htmlspecialchars和htmlspecialchars_decode

语法结构:

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

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

&amp; 成为 & (和号)
&quot; 成为 " (双引号)
&#039; 成为 ' (单引号)
&lt; 成为 < (小于)
&gt; 成为 > (大于)

参数:

参数 描述
string 必需。规定要解码的字符串。
quotestyle

可选。规定如何解码单引号和双引号。

  • ENT_COMPAT - 默认。仅解码双引号。
  • ENT_QUOTES - 解码双引号和单引号。
  • ENT_NOQUOTES - 不解码任何引号。

示例:

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>
<?php
$str = "<p>this -&gt; &quot;</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>




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.