欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php字符串函数

程序员文章站 2022-04-14 08:41:27
...

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:添加到第二个%的参数
。。。依次类推
php字符串函数
php字符串函数

#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