字符串操作

1.手动转移字符串数据

 
  1. <?php 
  2. $name='Garfield'
  3. $str1='The'.$name.' cat\'s is pretty \n'
  4. echo $str1
  5. $str2="This is one line.\nAnd this's another line."
  6. echo $str2
  7. $var=123; 
  8. $str3="The \$var is $var"
  9. echo $str3
  10. ?> 

2.自动转移字符串数据
addslashes()
作用是为字符串里面的部分字符添加反斜线转义字符,addslashes()只为4个字符添
加转义,包括:单引号“’”,双引号“””,反斜线“\”和NULL(“\0”)

 
  1. <?php 
  2. $str="[sql]Who's Raymond?"
  3. echo $str . "This is not safe in a database query.<br/>"
  4. echo addslashes($str) . "This is safe in a database query."."<br/>"
  5. ?> 

addcslashes()
格式:addcslashes(<string>,characters)
类似与使用反斜线转义字符串中的字符

 
  1. <?php 
  2. $str="Hello Friend,Never give up!"
  3. echo $str."<br/>"
  4. echo addcslashes($str'g')."<br/>"
  5. echo addcslashes($str'a..g')."<br/>"
  6. ?> 

3.数值转换字符串
chr()
格式:char($var)
根据$var中的ASCII值返回相对应的字符,因此$var变量必须是一个合法的ASCII码

 
  1. <?php 
  2. $var=98; 
  3. echo chr($var); 
  4. ?> 

ord()
格式:ord($string)
返回$string字符串首字符的ASCII码值

 
  1. <?php 
  2. $str="hello"
  3. if (ord($str)==10){ 
  4.     echo "\$str第一个字符的ASCII码是10.\n"
  5. }else
  6.     echo "\$str第一个字符的ASCII码是".ord($str); 
  7. ?>

4.字符串序列化
serialize()函数用于將数据集转换为可存储在数据块或回话记录中的字符串(如
SESSION或cookie的字符串)
unserialize()是反序列化

 
  1. <?php 
  2. $s='php'
  3. echo serialize($s); 
  4. ?> 
  5. ---------------------- 
  6. <?php 
  7. $arry=array("cats","drop","fur","everywhere"); 
  8. echo "原数组内容:<pre>"
  9. print_r($arry); 
  10. echo "<pre>序列化后的数组:<br/>"
  11. $string2=serialize($arry); 
  12. print_r($string2); 
  13. echo "</pre>反序列化后的数组:<br/><pre>"
  14. $arry2=unserialize($string2); 
  15. print_r($arry2); 
  16. echo "</pre>"
  17. ?> 

5.清理字符串中的空格
trim()  去除不必要的空格、换行符、水瓶和垂直制表符以及字符串结束符
ltrim() 去除字符串变量左侧的空格和格式控制符
rtrim() 去除字符串变量右侧的空格和格式控制符
6.格式化字符串
nl2br()与wordwrap()
这两个函数提供的都是文本或字符串换行功能
nl2br()是將字符串中的\n换行符转换为html中的<br>标签。经常用于用户提交表单
文本内容,经nl2br()处理换行后插入数据到数据表中,或从数据表中提取后,用它
转换显示一个标准的HTML换行的内容
wordwrap函数用于指定从某列字符进行强制转换

 
  1. <?php 
  2. $string="Hello\nWorld\n\nHow are you?"
  3. echo nl2br($string)."<br>"//將/n转换为浏览器识别的<br/>换行符 
  4. $textblock="See spot run, run spot run. See spot roll, run spot roll!"
  5. echo wordwrap($textblock,20,"<br/>");//在一行的第20个字符处强制换行 
  6. ?> 

7.改变字符串的大小写

 
  1. <?php 
  2. $astring="heloo world"
  3. echo strtolower($astring);//將字符串全部转为小写字符 
  4. echo strtoupper($astring);//將字符串全部转为大写字符 
  5. echo ucfirst($astring);//將首字符大写 
  6. echo ucwords($astring);//转换单词首字符大写 
  7. ?> 

8.字符串切分
格式:array explode(string $delimiter,string $string[,int $limit])
explode用户切分一个有明显标识的字符串,切分后返回一个索引数组

 
  1. <?php 
  2. $email="webmster@php.net"
  3. $mail_array=explode("@",$email);//以@为标识进行切分 
  4. print_r($mail_array); 
  5. $url_array=explode("/"$_SERVER['REQUEST_URI']); 
  6. print_r($url_array); 
  7. ?> 

9.字符串截取
格式:string substr(string $string,int $start[,int $length])
substr()截取字符串

 
  1. <?php 
  2. $test="Your programing ability is excellent"
  3. echo substr($test, 1)."<br>";//將得到"our programing ability is excellent" 
  4. echo substr($test, -9)."<br>";//將得到"excellent" 
  5. echo substr($test, 0,4)."<br>";//截取到第四个字符 
  6. echo substr($test, 4,-13)."<br>";//从第四个字符串开始截取到倒数第13个字符 
  7. ?> 

10.计算字符串的长度
格式:strlen<$string>/mb_strlen(<$string>);
计算一个字符串的长度

 
  1. <?php 
  2. echo strlen("China is great"); //注意空格也算一个字符 
  3. echo strlen("伟大的中国");//一个汉字占用两个字符长度,返回10 
  4. ?> 

11.字符串单词统计
格式:str_word_count($string)
统计一段文字中有多少个英语单词

 
  1. <?php 
  2. $text=<<<text 
  3. 测试:programing is art! wahaha 
  4. text; 
  5. $words=str_word_count($text); 
  6. echo "单词总数为:$words"
  7. ?> 
  8. ------------------------------------- 
  9. <?php 
  10. $text=<<<text 
  11. To be pure PHP developer, PHP is simple, 
  12. PHP is good web script. 
  13. building our web site. 
  14. text; 
  15. $words=str_word_count($text,2); 
  16. $count_array=array_count_values($words); //使用array_count_values对$words 
  17. 作统计后生成一个新数组 
  18. print_r($count_array); 
  19. ?> 

12.字符串查找
子串查找

 
  1. 格式:strstr($string,"keyword"); 
  2. <?php 
  3. $string="this is a demo string"
  4. if (strstr($string"demo")){ 
  5.     echo "有该子串"
  6. }else { 
  7.     echo "没有该子串"
  8. ?> 

查找子串的位置strpos()
格式: int strpos (string $haystack ,mixed $needle [,int $offset=0])
跟strstr()功能相似,只是返回的不是一个字符串,而是子串所出现的位置号
字符串重复str_repeat()
格式:str str_repeat(string $input,int $multiplier)
用于重复显示一个字符或字符串

 
  1. <?php 
  2. $repeat_str=str_repeat("PHP5", 10); 
  3. echo $repeat_str."<br>"
  4. ?> 

查找子串出现的次数substr_count()
格式:int substr_count($string,$keyword)

 
  1. <?php 
  2. $repeat_str=str_repeat("PHP5", 10); 
  3. $counter=substr_count($repeat_str"PHP5"); 
  4. echo "字符串中PHP5字符一共出现".$counter."次."
  5. ?> 

13.字符串处理
字符串替换str_replace()
格式:mixed str_replace(mixed $search ,mixed $replace ,mixed $subject
[,int &$count])
str_replace()需要3个参数,第1个参数是要查找的目标关键字;第2个参数是要替
换的字符,可以是空白字符;第3个参数是搜索的目标文本。

 
  1. <?php 
  2. $text_1="Welcome to Beijing"
  3. $text_2="China"
  4. $text_3=str_replace("Beijing"$text_2$text_1); 
  5. echo $text_3
  6. ?> 

字符串翻转strrev()

 
  1. <?php 
  2. $string="abcdefg12345"
  3. echo strrev($string); 
  4. ?> 

转换HTML实体
在HTML中,有些字符有一些特殊的含义,比如小于号“<”是定义一个HTML标签的开
始。假如想要浏览器显示这些字符的话,需要在HTML代码中插入实体。
一个字符实体(entities)包括三个部分:一个与符号(&),一个实体名或者一个实体号
,最后是一个分号(;),比如要在HTML文档中显示一个小于号,要这样写:"&lt",半角
空格为"&nbsp;",&符号为"&amp;"
在php中,htmlspecialchars()和htmlentities()函数是专门用来將字符转换为HTML
实体的,一方面是为了页面显示安全,另一方面也是为了PHP代码不易出错
格式:string htmlspecialchars(string $string [,int $quote_style=ENT_COMPAT
[,string $charset [,bool $double_encode=true]]])

 
  1. <?php 
  2. $str='<a href="http://www.google.cn" title="Goole China">Goole 中国</a>'
  3. echo htmlspecialchars($str); 
  4. ?> 

htmlspecialchars()函数的第二个可选参数是选择引号的转换模式,可以选择一下
三个常量
ENT_COMPAT:表示转换双引号是保留单引号
ENT_QUOTES:表示同时转换双引号和单引号
ENT_NOQUOTES:表示两个都不转换,默认为ENT_COMPAT
第三个参数表示锁转换的字符编码集
清除HTML标签strip_tags()
格式:string strip_tags(string[,allow])

 
  1. <?php 
  2. $string="Email:<a href='spam@21cto.com'>spam@21cto.com</a>"
  3. echo "原始字符串=".$string."<br>"
  4. echo "目录字符串=".strip_tags($string)."<br>"
  5. ?> 

字符串比较strcmp()与strncmp()
格式:int strcmp(string $str1,string $str2,)
     int strncmp(string $str1,string $str2,int $len)

 
  1. <?php 
  2. $stringone="my story"
  3. $stringtwo="my story"
  4. if (strcmp($stringone$stringtwo)==0){ 
  5.     echo "两个字符串相同。<br>"
  6. if (strncmp("php developer""php", 3)==0){ 
  7.     echo "两个字符前3个字符是相同的!"
  8. ?> 

字符串解析strok()
格式:string strtok(string $str,string $token)
用于解析一个字符串,该函数会按照$token参数来解析和跟踪原始字符串

 
  1. <?php 
  2. $info="员工A:staff@21cto.com|思技创想,技术开发部"
  3. $tokens=":|,"//$info字符串用了:|和全角逗号3种分隔符,以此标志分析 
  4. $tokenized=strtok($info$tokens); 
  5. while ($tokenized){ 
  6.     echo "值=$tokenized<br>";            //从$tokenized数组循环显示每 
  7.  
  8. 个元素 
  9.     $tokenized=strtok($tokens); 
  10. ?> 

查找并替换字符串strpbrk()
格式:string strpbrk(string $haystack,string $char_list)
从原始字符串中的标识字符开始到截取到末尾,生成一个新的字符串

 
  1. <?php 
  2. $text='Hello,Welcome to PHP5 world'
  3. echo strpbrk($text'W'); 
  4. echo "<br>"
  5. echo strpbrk($text'w'); 
  6. ?>