PHP的字符串函數

  1. 常用的字符串輸出函數

  2. 常用的字符串格式化函數

    1. 去除空格和字符串填補函數

    2. 字符串大小寫的轉換

    3. 和HTML標籤相關的字符串格式化

    4. 其他字符串格式化函數

  3. 字符串比較函數

    1. 按字節順序進行字符串比較

    2. 按自然排序進行字符串比較


一、常用的字符串輸出函數
  • echo( )   -- 輸出字符串

  • print( )  -- 輸出一個字符串

  • die( )    -- 輸出一條消息,並退出當前腳本

  • printf( ) -- 輸出格式化字符串

  • sprintf( )-- 把格式化的字符串寫入一個變量中

echo、print、print_r、var_dump

<?php
echo ('abcd');
//echo print 兩者的區別是print有返回值1,其餘效果跟echo一樣
print('abcd');

echo '<br>';

print_r('abc');
print_r(array(1,3,4));

var_dump('abc');
var_dump(array(1,3,4,'abc'));


printf 和 sprintf 都是格式化字符串

<?php
//printf 和 sprintf 都是格式化字符串
header("content-type:text/html;charset=utf-8");
//$str = "圓周率的值是3.1415926";

//%d,%f,%s  1       2        3         4
$format = "%s,現在是%d點,圓周率的值是%f,%1\$s";
// 想在最後一個位置插入第一個的字符,格式: 位置1\s 佔位符
//值,返回int        1           2           3           4
printf($format,'今年是2014年,今天是8月7日','13abc','3.1415936abc');
//printf是需要參數的
echo '<hr>';
$str = sprintf($format,'今年是2014年,今天是8月7日','13abc','3.1415abc');
//sprintf 返回的是string類型
var_dump($str);
echo '<hr>';

echo $str;



二、常用的字符串格式化函數

    

1、去除空格和字符串填補函數


<?php
//去除兩端指定字符
$str = ' wangerxiao ';
$str2 = trim($str);
var_dump($str);
var_dump($str2);
echo '<hr>';

$str = 'head_';
//去除兩端的_
$str2 = trim($str,'_');
var_dump($str);
var_dump($str2);
echo '<hr>';

//要去除兩邊的符號,必須在‘’中輸入完整纔可以,否則無法去除
$str = 'head _|/.,';
//沒有輸入完整,無法去除
$str2 = trim($str,'_|/');
var_dump($str2);
echo '<hr>';

$str = 'head _|/.,';
//輸入完整,去除兩邊的符號
$str2 = trim($str,'_|/.,');
var_dump($str2);

/////////////////////////////////////////////////////////////
//去除.jpg後綴名
$str = 'zhaopian.jpg';
$str2 = trim($str,'.jpg');
var_dump($str2);

//去除左側指定字符
$str = 'loldotalol';
$str2 = ltrim($str,'lol');
var_dump($str2);

//去除右側指定字符
$str3 = rtrim($str,'lol');
var_dump($str3);


填補函數str_pad();

<?php
//str_pad ——使用另一個字符串填充字符串爲指定長度

$str = 'dota';
//填充爲10個字符串,默認從右邊添加
$str2 = str_pad($str,10,'lol');
var_dump($str2);

$str3  = str_pad($str,10,'lol',STR_PAD_LEFT);
var_dump($str3);

$str4 = str_pad($str,11,'l',STR_PAD_BOTH);
var_dump($str4);


結果:string(10"dotalollol" | string(10"lolloldota" | string(11"llldotallll"


2、字符串大小寫的轉換


<?php
$str = "GOOD GOOD STUDY,DAY DAY UP!";

// 將大寫字母變成小寫字母
echo strtolower($str);

$str = 'no can ,no bibi!';

//將小寫字母變成大寫字母
echo strtoupper($str);

//首字母大寫
echo ucfirst($str);

//每個單詞首字母大寫
echo ucwords($str);

3、和HTML標籤相關聯的字符串格式化


將字符串中 “\n”轉換成  HTML換行符“<br />”,只有在瀏覽器中查看源碼的時候纔可以看到標籤

<?php
$str =  "Long long a go, you yige xiao gunian zhuzai senlinli.\nyou yitian guniang yudao qige ren ,jiu wen nimen jiushi wo ming zhong zhuding de 7 ge xiao airenma?\n qizhog yige nan ren zhanchu lai shuo guniang ni zhaocuo dile ,women shi huluwa!";

//將字符串中 “\n”轉換成  HTML換行符“<br />”

$str2 = nl2br($str);
var_dump($str2);

結果:

string(246) "Long long a go, you yige xiao gunian zhuzai senlinli.
you yitian guniang yudao qige ren ,jiu wen nimen jiushi wo ming zhong zhuding de 7 ge xiao airenma?
qizhog yige nan ren zhanchu lai shuo guniang ni zhaocuo dile ,women shi huluwa!" 


瀏覽器中的源碼:


string(246) "Long long a go, you yige xiao gunian zhuzai senlinli.<br />
you yitian guniang yudao qige ren ,jiu wen nimen jiushi wo ming zhong zhuding de 7 ge xiao airenma?<br />
qizhog yige nan ren zhanchu lai shuo guniang ni zhaocuo dile ,women shi huluwa!"
  


轉換成HTML字符實體

<?php
header("content-type:text/html;charset=utf-8");

$html = 'hanmeimei "我的名字叫韓梅梅,你叫什麼名字?" "我叫兄弟!"';
echo $html;
echo '<hr>';


//將特殊字符轉換成HTML實體字符
echo htmlspecialchars($html);

$chars = '<strong>男人們的世界</strong>';

//可以將所有的非ASCII碼轉換成對應的HTML實體字符
echo htmlentities($chars);

結果:

hanmeimei "我的名字叫韓梅梅,你叫什麼名字?" "我叫兄弟!"


hanmeimei "我的名字叫韓梅梅,你叫什麼名字?" "我叫兄弟!"


<strong>男人們的世界</strong>


瀏覽器源碼:

hanmeimei "我的名字叫韓梅梅,你叫什麼名字?" "我叫兄弟!"<hr>

hanmeimei &quot;我的名字叫韓梅梅,你叫什麼名字?&quot; &quot;我叫兄弟!&quot;

&lt;strong&gt;男人們的世界&lt;/strong&gt;


剝去 HTML、XML 以及 PHP 的標籤 strip_tags();

$str = '<script type="text/javacripte"></script>abc<html></html>';

//剝去 HTML、XML 以及 PHP 的標籤
var_dump(strip_tags($str));

結果:

string(3) "abc"


瀏覽器源碼:

string(3) "abc"


4、其他字符串格式化函數


翻轉字符串 strrev();

$str = 'eij,genf,uoy evol I';

//翻轉字符串
echo strrev($str);

結果:I love you,fneg,jie

統計字符串長度strlen();

<?php
$str = 'zhe shi yige henchang henchang de gushi :cong qian you zuoshan !';

//統計字符串長度
echo strlen($str);


四捨五入number_format();

<?php
$str = '1024.15926';
echo $str;
echo number_format($str);
echo '<hr>';

//四捨五入 保留2位小數
echo number_format($str,2);
echo '<hr>';

//第三個參數是小數點符號
//第四個參數是千分位符號
echo number_format($str,2,'&','$');

結果:

1024.159261,024


1,024.16


1$024&16


加密md5

<?php
$str = '';
echo md5($str);
echo '<hr>';
$str = '123456';
echo md5($str);
echo '<hr>';
$str = 123456;
echo md5($str)

結果:

d41d8cd98f00b204e9800998ecf8427e


e10adc3949ba59abbe56e057f20f883e


e10adc3949ba59abbe56e057f20f883e


三、字符串比較函數

PHP中,有多種方法可以對字符串進行比較,除了可以直接使用條件運算符(<, >, ==)加以比較外。

按字節進行字符串的比較

  • strcmp();(整個比較是否相同)

  • strncmp();(指定比較長度的字符串比較)

  • strcasecmp(); (不區分大小寫的全串比較)

按自然排序法時行字符串的比較

  • strnatcmp(); 

字符串的模糊比較

  • similar_text(); (返回相似字符串的個數)

<?php
$str = 'gaofus2';
$str2 = 'gaofus0';

//按照字符比較兩個字符串,如果前者大,返回1,相等返回0 小於 返回-1
var_dump(strcmp($str,$str2));

//進制安全比較字符串開頭的若干個字符
var_dump(strncmp($str,$str2,3));

//
$str = 'A';
$str2 = 'a';

//二進制安全比較字符串(不區分大小寫)
echo strcasecmp($str,$str2);

$str1 = 'user121';
$str2 = 'user1201';

// 使用自然排序算法比較字符串
var_dump(strnatcmp($str1,$str2));

//返回相似字符串的個數
var_dump(similar_text($str1,$str2));

結果:

int(1)


int(1)


0


int(-1)


int(7)



6、字符串的分割與拼裝

<?php
$str = 'xiangjiao,huanggua,putao,mangguo,juzi,taozi';

// 用指定字符,將字符串分割到數組中
$arr = explode(',',$str);

echo '<pre>';
print_r($arr);

//implode(),join() 用指定字符將數組的各個單元值,連接成字符串
$str2 = join('#',$arr);
echo $str2;

結果:

Array

(

    [0] => xiangjiao

    [1] => huanggua

    [2] => putao

    [3] => mangguo

    [4] => juzi

    [5] => taozi

)

xiangjiao#huanggua#putao#mangguo#juzi#taozi


7、字符串的截取

<?php
$str = 'chiputaobutuputaopin';
// echo substr($str,1);
// echo substr($str,1,1);
// echo substr($str,-1);
// echo substr($str,1,-1);
// echo substr($str,-3,-1);

$str = '中國人民';
// echo substr($str,3);

//中文截取的解決方案
// echo mb_substr($str,0,1,'utf-8');
// echo iconv_substr($str,2,1,'utf-8');


8、字符串的查找


<?php
$str = 'doufuduoshaoqianyikuai,2kuai,1kuai2kuai,haishi 2kuai1kuai,2kuaiyikuai,nande nachu 1kuai,lai2kuai';

//返回 o字符串從 $str 第一次出現的位置開始到 $str結尾的字符串
var_dump(strstr($str,'o'));
echo '<hr>';

//返回 o字符串從 $str 最後次出現的位置開始到 $str結尾的字符串
var_dump(strrchr($str,'o'));

//尋找字符串中某字符最先出現的位置。默認從 0 開始。
echo strpos($str,'o');//substr($str,strpos($str,'o'),10)
echo '<br>';

//尋找字符串中某字符最後出現的位置。默認從 0 開始。
echo strrpos($str,'o');


9、字符串的替換,三種替換方式


<?php
$str = 'you yi  ge guniang ,zhan zai zhongguancun de tianqiao shang,shouli nazhe 發票,huai lichuai zhe 光盤, wanyao fuzhe langan ,zheng zai bei 警察 jiancha shenti';

//子字符串替換
$hexie = array('發票','光盤','警察');

$replace = array('ak47','C4','高老師');
echo '<hr>';
echo str_replace($hexie,$replace,$str);


10、其他

<?php

$str = 'a';

//將指定字符重複指定次數
echo str_repeat($str,10);
echo '<hr>';

$str = "An example on a  long word is : fslfkasflsfklsfel";

// 打斷字符串爲指定數量的字串,瀏覽器沒反應?
echo  wordwrap($str,2);
echo '<hr>';

$str = 'ABCDEFabcdef';

//隨機打亂字符串
$str2 = str_shuffle($str);
echo substr($str2,0,4);

//要解析的字符牀|存儲變量的數組名稱
//parse_str將字符串解析成多個變量
parse_str("id = 23 &name = john %2 20 Adams",$myArray);
print_r($myArray);
echo '<hr>';
$str = '<script><script><html>abc</html>';

//剝去HTML.XML PHP的標籤,看源碼的時候,不出現這些標籤
var_dump(strip_tags($str));
echo '<hr>';
$str = "Hello ,my name is John Adams";

echo $str;

echo '<hr>';
//addcslashes — 以 C 語言風格使用反斜線轉義字符串中的字符
echo addcslashes($str,'m');

echo '<hr>';

//獲取字符的ASSCII值
echo ord('A');

//從指定的ASSCII值返回字符
echo chr(97);


11、數學數組

<?php
// $n = -1.01;

// // 求絕對值
// echo abs($n);

$n = 1.00000000001;

//進1取整法
echo ceil($n);
echo '<br>';

// 捨去取整法
$n = 1.99999999999;
echo floor($n);
echo '<br>';
$n = 0.1;
echo fmod($n,0.03);


echo '<hr>';
echo pow(2,3);
echo '<hr>';
echo pow(10,3);
echo '<hr>';


$n = 3.1415926;

//四捨五入
echo round($n,3);
echo '<hr>';

//
echo sqrt(16);
echo '<hr>';

//求最大值
$n = array(7,8,1,3,9);
echo max(7,8,1,3,9);

echo '<hr>';
echo rand(0,9);
echo '<hr>';
echo mt_rand(0,9);
echo '<hr>';
echo rand();
echo '<hr>';
echo mt_rand();
echo '<hr>';
echo uniqid("class89_");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章