<?php echo 'strlen 是计算字符串"字节"长度'.'<br/>'; $str = "中华民国"; echo '字节长度是',strlen($str),'<br />'; // 12 //echo '字符长度是',mb_strlen($str,'utf-8'),'<br />'; echo 'strpos — 查找字符串首次出现的位置返回int类型<br/>'; $str = 'how are you! fine thank you,fine, may be you are right, 256, I dont think so,let me see,I can not fine'; echo 'how are you! fine thank you,fine, may be you are right, 256, I dont think so,let me see,I can not fine<br/>'; echo 'fine 出现的位置,还可以用与判断某字串存不存在<br/>'; echo strpos($str,'fine').'<br/>'; // 1:写一个函数,判断指定的父串中,有没某子串 //该方法错误 function findsub($str,$sub){ if(strpos($str,$sub)){ return true; }else{ return false; } } echo findsub('how are you','how'); //上面方法如果第一次出现为开始时则虽然找到了,但因为0是false所以错了。 //正确方法 function findsub2($str,$sub){ if(strpos($str,$sub)===false){ return false; } else{ return true; } } echo findsub2('how are you','how'); //substr_count — 计算字串出现的次数 //先写一个函数 function subsum($str,$sub){ $sublen=strlen($sub); $strlen=strlen($str); //子类比父类长 if($sublen>$strlen){ return false; } for($off=0,$num=0;($off=strpos($str,$sub,$off))!==false;){ $num+=1; $off=$off+=$sublen; } return $num; } $str = 'how are you! fine thank you,fine, may be you are right, 256, I dont think so,let me see,I can not fine'; echo '找到',subsum($str,'fine'),'个fine'; echo '<br />'; //系统自带的 echo substr_count($str,'fine').'个fine'; ?> <?php //str_replace 用法 — 子字符串替换 //str_replace可以进行数组替换,但要注意是一次一次的替换,不是批量替换 //替换次数是第四个参数 // $str = 'hi,this is lily,history'; //将hi换成hello $newstr = str_replace('hi','hello',$str); echo $str,'<br />',$newstr,'<br />'; /* 突然奇想, hi=>hello, hello=>hi */ $str = 'hi lily, hello jim'; $newstr = str_replace(array('hi','hello'),array('hello','hi'),$str); echo $newstr,'<br />'; // 觉得应该变成 hello lily, hi jim, 实际打印是 hi lily,hi jim $newstr=str_replace('i','m',$str,$num); echo '被替换'.$num.'次'; //strtr ,以单个字符对应来替换的 //比如 strtr($str,'hi','ab'), 则执行 h->a ,i->b $newstr=strtr('hi','hello',$str); echo $newstr.'<br/>'; //用于转半角ecshop中常用到 function make_semiangle($str) { $arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', 'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E', 'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J', 'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O', 'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T', 'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y', 'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i', 'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n', 'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's', 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x', 'y' => 'y', 'z' => 'z', '(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[', '】' => ']', '〖' => '[', '〗' => ']', '“' => '[', '”' => ']', '‘' => '[', '’' => ']', '{' => '{', '}' => '}', '《' => '<', '》' => '>', '%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-', ':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.', ';' => ',', '?' => '?', '!' => '!', '…' => '-', '‖' => '|', '”' => '"', '’' => '`', '‘' => '`', '|' => '|', '〃' => '"', ' ' => ' '); return strtr($str, $arr); } ?> <?php //以标识符EOT开始和以标识符EOT结束定义的一个字符串,当然可以使用其他合法的标识符 $string=<<<EOT 这里是包含在定界符中的字符串,指出了定界符的一些使用时注意的事项。 很重要的一点必须指出,结束标识符EOT所在的行不能包含任何其他字符。这尤其意味着该标识符不能被缩进, 而且在结束标记的分号之前和之后都不能有任何空格或制表符。 同样重要的是,要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符。 如果破坏了这条规则使得结束标识符不“干净”,则它不会被视为结束标识符,PHP将继续寻找下去。 如果在这种情况下找不到合适的结束标识符,将会导致一个在脚本最后一行出现的语法错误。 EOT; echo $string; //输出上面使用定界符定义的字符串 //这是一个使用单引号引起来的简单字符串 echo 'this is a simple string'; //在单引号中如果再包含单引号需要使用转义字符(\)转义 echo 'this is a \'simple\' string'; //只能将最后的反斜杠转义输出一个反斜杠,其他的转义都是无效的,会原样输出 echo 'this \n is \r a \t simple string\\'; $str=100; //定义一个整型变量$str //会将变量名$str原样输出,并不会在单引号中解析这个变量 echo 'this is a simple $str string'; $str = 'abc,中国,美国,日本'; // explode,是根据指定的分割符,把字符串拆成数组. $arr = explode(',',$str); print_r($arr); // implode,是根据指定的连接符,把数组再拼接成字符串 $arr = explode(',',$str); echo implode('~',$arr),'<br />'; // 你可以只传一个数组做参数,不指定连接符, // 也可以用与sql语句拼写 echo implode($arr).'<br/>'; function autoExecute($arr,$table,$model='insert', $where='where 1 limit 1'){ if(!is_array($arr)){ //判断是否为数组 return false; } if($model=='update'){ //如果是更新模式 $sql="$model $table set "; foreach($arr as $key=>$val){ $sql.="$key='$val' ,"; } $sql=rtrim($sql,','); //去,号 $sql.=$where; return $this->query($sql); } $sql='insert into '.$table.'( '.implode(',',array_keys($arr)). ')'; $sql.='values ( \''; $sql.=implode("','",array_values($arr)).'\')'; // return $this->query($sql); // var_dump($res); } //5中取后缀方法 $file='d.sf.s/ab/sdfs.c.exe'; //直接用系统文件函数 function ext1($file){ $path_parts=pathinfo($file); return $path_parts["extension"]; } echo ext1($file).'<br/>'; //用数组先将字符串拆成数组,在取数组最后单元 function ext2($file){ $arr=explode('.',$file); //print_r($arr);exit; return end($arr); } echo ext2($file).'<br/>'; //用字符串操作获取最后一个点 function ext3($file){ return ltrim(strrchr($file,'.'),'.'); } echo ext3($file).'<br/>'; //找到最后一个.出现的位置,然后截取到尾部 function ext4($file){ return ltrim(substr($file,strrpos($file,'.')),'.'); } echo ext4($file).'<br/>'; //先反转过来,在找到第一个.位置窃取之前的。在反转过来 function ext5($file){ $file=strrev($file); return strrev(substr($file,0,strpos($file,'.'))); } echo ext5($file).'<br/>'; //函数str_pad 使用另一个字符串填充字符串为指定长度 $str = "LAMP"; echo str_pad($str, 10).'<br/>'; //指定长度为10,默认使用空格在右边填补"LAMP" echo str_pad($str, 10, "-=", STR_PAD_LEFT).'<br/>'; //指定长度为10,指定在左边填补" -=-=-=LAMP" echo str_pad($str, 10, "_", STR_PAD_BOTH).'<br/>'; //指定长度为10,指定两端填补 " _ _ _LAMP_ _ _" echo str_pad($str, 6 , "_ _ _").'<br/>'; //指定长度为6, 默认在右边填补" LAMP_ _" //首字母大写 $lamp = "lamp is composed of Linux、Apache、MySQL and PHP"; echo ucfirst( strtolower($lamp) ); //输出: Lamp is composed of linux、apache、mysql and 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标记和不对引号转换 //strip_tags — 从字符串中去除 HTML 和 PHP 标记 使用可选的第二个参数指定不被去除的字符列表 $str = "<font color='red' size=7>Linux</font> <i>Apache</i> <u>Mysql<u> <b>PHP</b>"; echo strip_tags($str); //删除了全部HTML标签,输出:Linux Apache Mysql PHP echo strip_tags($str, "<font>"); //输出<font color='red' size=7>Linux</font> Apache Mysql PHP echo strip_tags($str, "<b><u><i>"); //输出Linux <i>Apache</i> <u>Mysql<u> <b>PHP</b> //strcasecmp — 二进制安全比较字符串(不区分大小写)可以用于校验用户名 $userName = "Admin"; //声明一个字符串作为用户名 $password = "lampBrother"; //声明一个字符串作为密码 //不区分大小写地比较,如果两个字符串相等返回0 if(strcasecmp($userName, "admin") == 0) { echo "用户名存在"; } //将两个比较的字符串使用相应的函数转成全大写或全小写后,也可以实现不区分大小写地比较 if( strcasecmp(strtolower($userName), strtolower("admin")) == 0 ) { echo "用户名存在"; } ?> <?php //定义一个变量名为$beer的变量 $beer = 'Heineken'; //可以将下面的变量$beer解析,因为(')在变名中是无效的。 echo "$beer's taste is great"; //不可以解析变量$beers, 因为“s”在变量名中是有效的,没有$beers这个变量 echo "He drank some $beers"; //使用{}包含起来,就可以将变量分离出来解析了 echo "He drank some ${beer}s"; //可以将变量解析,{}的另一种用法 echo "He drank some {$beer}s"; define("CON_INT", 100); //声明一个名为CON_INT的常量,值为整型100 echo CON_INT; //使用常量,输出整数值100 define("FLO", 99.99); //声明一个名为FLO的常量,值为浮点数99.99 echo FLO; //使用常量,输出浮点数值99.99 define("BOO", true); //声明一个名为BOO的常量,值为布尔型true echo BOO; //使用常量,输出整数1 //声明一个名为CONSTANT的常量,值为字符串hello, world. define("CONSTANT", "Hello world."); echo CONSTANT; //输出字符串 "Hello world." echo Constant; //输出字符串"Constant" 和问题通知 //声明一字符串常量GREETING, 使用第三个参数传入true值,常数将会定义成不区分大小写 define("GREETING", "Hello you.", true); echo GREETING; //输出字符串 "Hello you." echo Greeting; //输出字符串 "Hello you."" //使用defined()函数,检查常量CONSTANT是否存在,如果存在则输出常量的值 if (defined('CONSTANT')) { echo CONSTANT; } ?>