php字符串函数
1、http_build_query()
生成 URL-encode 之后的请求字符串
$data = array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');
echo http_build_query($data) . "\n";
输出:foo=bar&baz=boom&cow=milk&php=hypertext+processor
echo http_build_query($data, '', '&');
输出:foo=bar&baz=boom&cow=milk&php=hypertext+processor
2、strcmp($str1,$str2) 和strcasecmp($str1,$str2)、strncmp($str1,$str2,$len)字符串比较函数
三个函数比较相似,按照字节的ASCII值从两个字符串的首字节开始比较,如果相等则进入下一个字节的比较,直至结束比较。
strcmp返回值:
0:相等
1:$str1大于$str2
-1:$str1小于$str2
>0:字符串部分相同,但$str1字符串比$str2长
\<0:字符串部分相同,但$str2字符串比$str1长
echo strcmp('Hello','hEllo'); //输出-1 ,第一个字节就不相等,后面就不用比了
echo strcmp('hEllo','Hello'); //输出1
echo strcmp("Hello wor","Hello"); //输出4,若前面的字符串都相等,后面的比较长度
strcasecmp:返回值是将字符串全部转化成小写,在根据ASKII码值的差值计算得来。用法同strcmp
strncmp($str1,$str2,$len) 能指定最大比较长度,用法跟strcmp()相同
3、strtr($str,$arr)转换字符串中特定字符
$str:字符串
$arr:转换关系的数组
$arr = array("Hello" => "Hi", "world" => "earth");
echo strtr("Hello world",$arr); //输出 Hi,earth
另一种形式:
strtr($str,$from,$to)
$from[$n]中每次的出现都会被替换为 $to[$n],其中 $n 是两个参数都有效的位移(offset)。
$str = 'Hello world!';
echo strtr($str,"Hello","12345");//H被换成1,e被换成2,以此类推
4、printf() 和sprintf()
printf() 函数输出格式化的字符串。
sprint()函数把格式化的字符串写入变量中。
sprintf()详细解释:
sprintf(“%格式化类型”,arg1,arg2,arg++)
arg1:添加到第一个%的参数
arg2:添加到第二个%的参数
。。。依次类推
#1: % '(补位值) 宽度值 格式化类型
$c="1234";
echo sprintf("%'x13.2f",$c);
// 效果为:xxxxxx1234.00
#2: % 宽度值 格式化类型 (无需补位)
$a="abcdef";
$b="abcdef";
$c="1234";
echo sprintf("[%-6s]",$c); //结果是:[1234 ] 默认向左补充,-表示向右补充,-6前没有要填充的字符,就用空格补充,但最多就显示一个空格
echo sprintf("[%'x-8s]",$a); //结果是:[abcdefxx]
echo sprintf("[%4.2s]",$c); //结果是:[ 12] 解释:.[0-9]若是数字时,代表小数位数;此处是字符串,表示字符串的最大长度,所以先将字符串剪为2位,4代表整个变量的最小宽度为4,所以不够的要补位,默认向左补位空格,但最多显示一个空格,结果为[ 12]
echo sprintf("[%08s]",$a)//0表是用0补充空位,此时前面可以不加单引号,8代表总长度,默认向左填充 [00abcdef]
5、hash()
hash($algo,$str)
$algo为加密算法,常用的有sha1、MD5、sha256
Sha1有专门的php函数: Sha1($str)
6、hash_hmac($algo,$data,$key)
生成带有秘钥的哈希值
$algo:哈希算法名,md5,sha256等
$data:加密的内容
$key:**
7、base64_encode(string $data)
Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入, base64简单地说,它把一些 8-bit 数据翻译成标准 ASCII 字符.图片类型格式如下:
data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/ KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/ LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg%3D%3D。
header('Content-type:text/html;charset=utf-8');
function image_base64($image_file){
if(empty($image_file))return false;
$image_info = getimagesize($image_file);
$base64_image_content = "data:{$image_info['mime']};base64," . chunk_split(base64_encode(file_get_contents($image_file)));// chunk_split不加参数时,默认76个字符后会加个换行符;
return $base64_image_content;
}
echo image_base64('./Desert.jpg');
解码时:只需要将base64, 后面的部分base64_decode()即可,结合file_put_content()将其保存;
8、urlencode()
在浏览器地址栏传递一些特殊符号信息,会被误解,例如 & = 空格 中文 等,使用urlencode()对其进行编码;
urlencode():除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格编码为+。
9、iconv()
string iconv ( string in_charset, string out_charset, string str )
第二个参数可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断(即遇到不能转化的字符,之后的所有字符都不能输出)。
iconv(‘utf-8’,’gb2312//IGNORE’,$str); //当中文不能显示时,需要转成gbk或gb2312
10、mb_convert_encoding (string str, string to_encoding [, mixed from_encoding])
可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;
注:一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.
11、str_getcsv() 解析csv字符串为数组
array str_getcsv ( string $input [, string $delimiter = “,” [, string $enclosure = ‘”’ [, string $escape = “\” ]]] )
不同于explode(),可以设置包裹字符,将被包裹的内容看成整体,不被$delimiter分割
input : 待解析的字符串
delimiter : 设定字段界定符(仅单个字符)
enclosure : 设定字段包裹字符(仅单个字符)
escape : 设置转义字符(仅单个字符),默认为反斜线(\)
$str = "中国,广东省,广州市,天河区,'113.329884,23.154799',1,'2016-01-01 12:00:00','1,2,3,4,5,6'";
$arr = str_getcsv($str, ',', "'");
print_r($arr);
//输出:
Array
(
[0] => 中国
[1] => 广东省
[2] => 广州市
[3] => 天河区
[4] => 113.329884,23.154799
[5] => 1
[6] => 2016-01-01 12:00:00
[7] => 1,2,3,4,5,6
)
12、str_word_count($str)
统计字符串中含有的单词数
13、strpos(string,search[,start])
查找字符串search在string中首次出现的位置,也常用于检测字符串中是否含有某个字符
大小写敏感
未查到返回false