PHP之字符串函数

字符串的处理和分析在任何编程语言中都是一个重要的基础,往往是简单而重要的。信息的分类、解析、存储和显示,以及网络中的数据都需要操作字符串来完成。尤其在web开发中更为重要,程序员大部分工作都是在操作字符串,本文将详细介绍php中的字符串函数

  [注意]关于javascript中字符串的属性和方法移步至此

特点

  因为php是弱类型语言,所以其他类型的数据一般都可以直接应用于字符串操作函数中,而自己转换成字符串类型进行处理

echo substr( "1234567", 2, 4 );  //将字串用函数substr()处理,输出子字符串 345echo substr( 123456, 2, 4 );     //将整型用字串函数处理,输出同样是字符串 345echo hello;           //先找hello常量,找不到就会将常名看作是字符串使用

  字符串貌似数组,可以使用中括号语法,但由于无法与真正的数组进行区别,带来二义性,所以最好使用功能相同的花括号

$str = "lamp";       
echo $str."<br>";       
echo $str{0};//输出字符串$str中第一个字符lecho $str[1];//输出字符串$str中第二个字符a,[]也可以,不过已过时

  在处理变量解析时,如果在字符串中遇到美元符号,解析器会尽可能多地取得后面的字符以组成一个合法的变量名,如果想明确指定名字的结束,用花括号把变量名括起来

    $lamp = array(‘os‘=>‘Linux‘);  
    //可以解析
    echo "A OS is $lamp[os].";    
    //不能解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错
    echo "A OS is $lamp[‘os‘].";    
    //可以解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错
    echo "A OS is {$lamp[‘os‘]}.";    
    //可以解析,注意PHP将数组下标看作常量名,常量不存在时将常量名称转为字符串,效率低
    echo "A OS is {$lamp[os]}.";

  [注意]在php中,一个GB2312编码的汉字占2个字节,一个UTF-8编码的汉字占3个字节

输出

echo()

void echo ( string $arg1 [, string $... ] )

  echo()函数用来输出一个或多个字符串,它会输出所有参数,且不会换行,没有返回值

  echo不是一个函数, 因此不一定要使用小括号来指明参数,单引号,双引号都可以。另外,如果想给echo 传递多个参数,就不能使用小括号

<?phpecho "Hello World";$foo = "foobar";echo "foo is $foo"; // foo is foobarecho $foo;          // foobar?>

print()

int print ( string $arg )

  print()函数用来输出字符串,且总是返回 1

<?phpprint("Hello World");$foo = "foobar";print "foo is $foo"; // foo is foobarprint $foo;          // foobar?>

var_dump(echo(‘123‘));//报错var_dump(print(‘123‘));//int 1

  echo可以接受多个参数(不可以加括号),而print不可以

<?phpecho ‘1‘,‘2‘,‘3‘;//123print ‘a‘,‘b‘,‘c‘;//报错?>

exit()

  exit()函数用来输出一个消息并且退出当前脚本,没有返回值,同名函数为die()

void exit ([ string $status ] )
void exit ( int $status )

  如果 status 是一个字符串,在退出之前该函数会打印status;如果 status 是一个 integer,该值会作为退出状态码,并且不会被打印输出。退出状态码应该在范围0至254,不应使用被PHP保留的退出状态码255。 状态码0用于成功中止程序

<?phpexit(‘0‘);//0exit(0);//无返回值?>

printf

  printf()函数用于输出格式化字符串

int printf ( string $format [, mixed $args [, mixed $... ]] )

sprintf

  sprintf()函数用于把格式化的字符串写入一个变量中

string sprintf ( string $format [, mixed $args [, mixed $... ]] )

  字符串转换格式如下

%%    返回百分比符号%b    二进制数%c    依照ASCII值的字符%d    带符号十进制数%e    科学计数法(如1.5e3)%u    无符号十进制数%f或%F     浮点数%o        八进制数%s        字符串%x或%X    十六进制数

<?php$var = 10;printf("%%,%b,%c,%d,%e,%u,%o,%f,%s,%x",$var,$var,$var,$var,$var,$var,$var,$var,$var,$var);//%,1010, ,10,1.000000e+1,10,12,10.000000,10,a$result = sprintf("%%,%b,%c,%d,%e,%u,%o,%f,%s,%x",$var,$var,$var,$var,$var,$var,$var,$var,$var,$var);var_dump($result);//string ‘%,1010, ,10,1.000000e+1,10,12,10.000000,10,a‘ (length=44)?>

  上面的两个函数不仅可以设置转换类型,还可以设置精确度、填充符和对齐方式

%%.%#    在结果前面填充#号
%-   左对齐
printf("%‘#10.3f",123);//###123.000printf("%10.3f",123);// 123.000(右对齐)printf("%-10.3f",123);//123.000   (左对齐)

空格

trim()

  trim()函数用于去除字符串首尾处的空白字符(或者其他字符),过滤后的字符串

string trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )

  此函数返回字符串str去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符:

" " (ASCII 32 (0x20)),普通空格符"\t" (ASCII 9 (0x09)),制表符"\n" (ASCII 10 (0x0A)),换行符"\r" (ASCII 13 (0x0D)),回车符"\0" (ASCII 0 (0x00)),空字节符"\x0B" (ASCII 11 (0x0B)),垂直制表符

  charlist为可选参数,过滤字符也可由charlist参数指定。一般要列出所有希望过滤的字符,也可以使用 “..” 列出一个字符范围

ltrim()

  ltrim函数用于删除字符串开头的空白字符(或其他字符)

rtrim()

  rtrim函数用于删除字符串末端的空白字符(或者其他字符) 

<?php$text  = "   \t\tHello World a1a1a1    ";$trimmed = trim($text);var_dump($trimmed);//string ‘Hello World a1a1a1‘ (length=18)$trimmed = trim($text, "a1 ");var_dump($trimmed);//string ‘        Hello World‘ (length=13)$trimmed = trim($text, "1..e ");//string ‘        Hello Worl‘ (length=12)var_dump($trimmed);$ltrimmed = ltrim($text);var_dump($ltrimmed);//string ‘Hello World a1a1a1    ‘ (length=22)$rtrimmed = rtrim($text);var_dump($rtrimmed);//string ‘           Hello World a1a1a1‘ (length=23)?>

str_pad()

  str_pad()函数使用另一个字符串填充字符串为指定长度

string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

  该函数返回input被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 pad_string 参数没有被指定,input 将被空格字符填充,否则它将被 pad_string 填充到指定长度

  [注意]如果pad_length的值是负数,小于或者等于输入字符串的长度,不会发生任何填充

<?php$input = "Alien";echo str_pad($input, 10); // 输出 "Alien     "echo str_pad($input, 10, "-=", STR_PAD_LEFT); // 输出 "-=-=-Alien"echo str_pad($input, 10, "_", STR_PAD_BOTH); // 输出 "__Alien___"echo str_pad($input, 6 , "___");// 输出 "Alien_"?>

大小写

strtolower()

  strtolower — 将字符串转化为小写

strtoupper()

  strtoupper — 将字符串转化为大写

ucfirst()

  ucfirst — 将字符串的首字母转换为大写

ucwords()

  ucwords — 将字符串中每个单词的首字母转换为大写

<?php$foo = ‘hello world!‘;var_dump(ucwords($foo));//string ‘Hello World!‘ (length=12)var_dump(ucfirst($foo));//string ‘Hello world!‘ (length=12)var_dump(strtoupper($foo));//string ‘HELLO WORLD!‘ (length=12)var_dump(strtolower($foo));//string ‘hello world!‘ (length=12)?>

HTML

nl2br()

  nl2br — 在字符串所有新行之前插入 HTML 换行标记

string nl2br ( string $string [, bool $is_xhtml = true ] )

<?php/*foo isn‘t<br />
 bar */echo nl2br("foo isn‘t\n bar");?>

htmlspecialchars()

string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

  htmlspecialchars - 把指定特殊符号转换成实体

& (ampersand)            &amp;" (double quote)        &quot;, unless ENT_NOQUOTES is set
‘ (single quote)        ' or &apos;
< (less than)            &lt;
> (greater than)        &gt;

<?php$new ="<script>alert(1)</script>";echo $new;//弹出1$new = htmlspecialchars("<script>alert(1)</script>");echo $new; //显示字符串"<script>alert(1)</script>"?>

<?php    $str = "<B>WebServer:</B> & ‘Linux‘ & ‘Apache‘";//常有HTML标记和单引号的字符串
    echo htmlspecialchars($str, ENT_COMPAT);//转换HTML标记和转换双引号
    echo "<br>\n";    echo htmlspecialchars($str, ENT_QUOTES);//转换HTML标记和转换两种引号
    echo "<br>\n";    echo htmlspecialchars($str, ENT_NOQUOTES);//转换HTML标记和不对引号转换?>

htmlentities()

string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

  htmlentities - 将所有的非ASCII码转换成对应实体代码

  htmlentities()和htmlspecialchars()的功能都是转换字符为HTML字符编码,特别是url和代码字符串,防止字符标记被浏览器执行。htmlentities转换所有的html标记,htmlspecialchars只格式化& ‘ " < 和 > 这几个特殊符号

<?php$str = "<p>123</p>";echo $str;//显示段落123echo htmlentities($str);//‘123‘echo htmlspecialchars($str);//‘123‘?>

strip_tags()

  strip_tags — 尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果

string strip_tags ( string $str [, string $allowable_tags ] )

  使用可选的第二个参数allowable_tags指定不被去除的字符列表

<?php$text = ‘<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>‘;echo strip_tags($text);//‘Test paragraph. Other text‘echo "\n";echo strip_tags($text, ‘<p>‘).‘<br>‘;//<p>Test paragraph.</p> Other text$text = ‘<div><b>123</b></div>‘;echo strip_tags($text);//‘123‘?>

addslashes()

  addslashes — 使用反斜线引用字符串,返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(‘)、双引号(")、反斜线(\)与 NUL(NULL 字符)

string addslashes ( string $str )
<?php$str = "Is your name O‘reilly?";echo addslashes($str);// "Is your name O\‘reilly?"?>

stripslashes()

  stripslashes — 反引用一个引用字符串

string stripslashes ( string $str )
<?php$str = "Is your name O\‘reilly?";echo stripslashes($str);//"Is your name O‘reilly?"?>

格式化

strrev()

  strrev — 反转字符串

string strrev ( string $string )
<?phpecho strrev("Hello world!"); // 输出 "!dlrow olleH"?>

strlen()

  strlen — 获取字符串长度

int strlen ( string $string )

<?php$str = ‘abcdef‘;echo strlen($str); // 6$str = ‘ ab cd ‘;echo strlen($str); // 7?>

md5()

  md5 — 计算字符串的 MD5 散列值

string md5 ( string $str [, bool $raw_output = false ] )

  如果可选的raw_output被设置为TRUE,那么MD5报文摘要将以16字节长度的原始二进制格式返回

<?php$str = ‘apple‘;if (md5($str) === ‘1f3870be274f6c49b3e31a0c6728957f‘) {    echo "Would you like a green or red apple?";
}?>

比较

strcmp()

  strcmp — 字符串比较,如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

int strcmp ( string $str1 , string $str2 )

<?php$var1 = "Hello";$var2 = "hello";if (strcmp($var1, $var2) !== 0) {    echo ‘$var1 is not equal to $var2 in a case sensitive string comparison‘;
}?>

strncmp()

  strncmp — 限定字符串长度的字符串比较

int strncmp ( string $str1 , string $str2 , int $len )

  如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

<?php 
echo strncmp("xybc","a3234",0); // 0 echo strncmp("xybc","a3234",1); // 1 ?>

strcasecmp()

  strcasecmp — 字符串比较(不区分大小写),如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

int strcasecmp ( string $str1 , string $str2 )

<?php$var1 = "Hello";$var2 = "hello";if (strcasecmp($var1, $var2) == 0) {    echo ‘$var1 is equal to $var2 in a case-insensitive string comparison‘;
}?>

strnatcmp()

  strnatcmp — 使用自然排序算法比较字符串

int strnatcmp ( string $str1 , string $str2 )

  如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

<?php$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");usort($arr1, "strcmp");print_r($arr1);//Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png )usort($arr2, "strnatcmp");//Array ( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png )print_r($arr2);?>

位置

strstr()

  strstr()查找字符串的首次出现,返回haystack字符串从needle第一次出现的位置开始到haystack结尾的字符串

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

  before_needle若为TRUE,strstr()将返回needle在haystack中的位置之前的部分

<?php
$email  = ‘[email protected]‘;
$domain = strstr($email, ‘@‘);
echo $domain; // @example.com$user = strstr($email, ‘@‘, true); 
echo $user; //name?>

strpos()

  strpos()查找字符串首次出现的位置

mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
<?php// 忽视位置偏移量之前的字符进行查找$newstring = ‘abcdef abcdef‘;
$pos = strpos($newstring, ‘a‘, 1); // $pos = 7, 不是 0?>

strrpos()

  strrpos()计算指定字符串在目标字符串中最后一次出现的位置

int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

<?php
$foo = "0123456789a123456789b123456789c";

var_dump(strrpos($foo, ‘7‘, -5));  // 从尾部第 5 个位置开始查找                                   // 结果: int(17)var_dump(strrpos($foo, ‘7‘, 20));  // 从第 20 个位置开始查找                                   // 结果: int(27)var_dump(strrpos($foo, ‘7‘, 28));  // 结果: bool(false)?>

子串

substr()

  substr()返回字符串的子串

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

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

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

替换

str_replace()

  str_replace()返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

  如果count被指定,它的值将被设置为替换发生的次数

<?php// 赋值: <body text=‘black‘>$bodytag = str_replace("%body%", "black", "<body text=‘%body%‘>");// 赋值: Hll Wrld f PHP$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");// 赋值: You should eat pizza, beer, and ice cream every day$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy   = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);// 赋值: 2$str = str_replace("ll", "", "good golly miss molly!", $count);
echo $count;?>

分割

【explode()】

  explode()使用一个字符串分割另一个字符串,返回由字符串组成的数组,每个元素都是string的一个子串,它们被字符串delimiter作为边界点分割出来

array explode ( string $delimiter , string $string [, int $limit ] )

  如果设置了limit参数并且是正数,则返回的数组包含最多limit个元素,而最后那个元素将包含string的剩余部分;如果limit参数是负数,则返回除了最后的-limit个元素外的所有元素;如果limit是0,则会被当做1

<?php// 示例 1$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1echo $pieces[1]; // piece2// 示例 2$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // fooecho $pass; // *?>

【implode()】

  implode()将一个一维数组的值转化为字符串

string implode ( string $glue , array $pieces )string implode ( array $pieces )

<?php

$array = array(‘lastname‘, ‘email‘, ‘phone‘);
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone// Empty string when using an empty array:var_dump(implode(‘hello‘, array())); // string(0) ""?>
时间: 2024-10-07 06:55:51

PHP之字符串函数的相关文章

sql常用格式化函数及字符串函数

一.常用格式化函数 1.日期转字符串 select to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS') //2017-09-18 22:41:50 YYYY:年(4和更多位) MM:月份号(01-12) DD:一个月里的日(01-31) HH24:一天的小时数(00-23) MI:分钟(00-59) SS:秒(00-59) 2.字符串转日期 select to_date('2017-09-18','YYYY-MM-DD') //2017-09-

高级字符串函数

查找一个字符串前缀 size_t strspn(char const *str,char const *group) size_t strcspn(char const *str,char const *group) strspn 返回str起始部分匹配group中任意字符的字符数 strcspn他对str字符串起始部分中部与group中任何字符匹配的字符进行技术 在字符串中查找指定字符串最后一次出现的位置 strrstr #include<stdio.h> #include<asser

mysql学习笔记(五)--- 字符串函数、日期时间函数

一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左.取右 6.LENGTH   获取长度(字节为单位) 7.LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8.STRCMP  字符串比较 9.CONCAT  字符串拼接 10.SUBSTRING  字符串截取 1.CHAR_LENGTH:获取长度(字符为单位) CHAR_LENGTH()

SQL字符串函数

LEN() :计算字符串长度(字符的个数.)datalength();//计算字符串所占用的字节数,不属于字符串函数.测试varchar变量与nvarchar变量存储字符串a的区别.见备注1.LOWER() .UPPER () :转小写.大写LTRIM():字符串左侧的空格去掉 RTRIM () :字符串右侧的空格去掉 LTRIM(RTRIM('         bb        '))LEFT().RIGHT()  截取取字符串SELECT LEFT('abcdefg',2) SUBSTRI

前端学PHP之字符串函数

前面的话 字符串的处理和分析在任何编程语言中都是一个重要的基础,往往是简单而重要的.信息的分类.解析.存储和显示,以及网络中的数据都需要操作字符串来完成.尤其在web开发中更为重要,程序员大部分工作都是在操作字符串,本文将详细介绍php中的字符串函数 [注意]关于javascript中字符串的属性和方法移步至此 特点 因为php是弱类型语言,所以其他类型的数据一般都可以直接应用于字符串操作函数中,而自己转换成字符串类型进行处理 echo substr( "1234567", 2, 4

Python学习入门教程,字符串函数扩充详解

因有用户反映,在基础文章对字符串函数的讲解太过少,故写一篇文章详细讲解一下常用字符串函数.本文章是对:程序员带你十天快速入门Python,玩转电脑软件开发(三)中字符串函数的详解与扩充. 如果您想学习并参与本教程的完善与写作.请在下方讨论区,回复相关问题.一起完善本文章教程的书写. Python字符串常用函数. 声明字符串变量: str = ‘关注做全栈攻城狮,写代码也要读书,爱全栈,更爱生活.’ 下面所有字符串函数函数,是对变量str进行操作: 求字符串长度: 函数使用: 运行结果: 值得注意

Mysql处理字符串函数(转)

http://www.jb51.net/article/27458.htm 感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用. 函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2.从右开始截取字符串 right(str, length) 说明:right(

MySQL字符串函数、日期时间函数

MySQL字符串函数.日期时间函数 一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左.取右 6.LENGTH   获取长度(字节为单位) 7.LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8.STRCMP  字符串比较 9.CONCAT  字符串拼接 10.SUBSTRING  字符串截取 1.CHAR_LENGTH:获取长度(字符

(转)驱动开发中使用安全字符串函数

参考链接:http://www.cppblog.com/aurain/archive/2009/09/27/97363.html 一.前言 大量的系统安全问题是由于薄弱的缓冲处理以及由此产生的缓冲区溢出造成的,而薄弱的缓冲区处理常常与字符串操作相关.c/c++语言运行库提供的标准字符串操作函数(strcpy, strcat, sprintf等)不能阻止在超出字符串尾端的写入. 基于Windows XP SP1以及随后的操作系统的Windows DDK版本提供了安全字符串函数(safe strin

字符串函数:获取个数,替换,除空格

--字符串函数--LEN():获取指定参数的字符个数select LEN('中华人民共和国')--CHARINDEX(所需要查询的字符串,源字符串,查询起始位置)-IndexOf().能够找到就返回从1开始的索引,如果不能找到就返回0select CHARINDEX('人民','中华人民共和国')select CHARINDEX('人 民','中华人民共和国')select CHARINDEX('人民','中华人民共和国',2)--UPPER ToUpper() LOWER()--ToLower