程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 前端學PHP之字符串函數,php字符串函數

前端學PHP之字符串函數,php字符串函數

編輯:關於PHP編程

前端學PHP之字符串函數,php字符串函數


×
目錄
[1]特點 [2]輸出 [3]空格[4]大小寫[5]HTML[6]格式化[7]比較

前面的話

  字符串的處理和分析在任何編程語言中都是一個重要的基礎,往往是簡單而重要的。信息的分類、解析、存儲和顯示,以及網絡中的數據都需要操作字符串來完成。尤其在web開發中更為重要,程序員大部分工作都是在操作字符串,本文將詳細介紹php中的字符串函數

  [注意]關於javascript中字符串的屬性和方法移步至此

 

特點

  因為php是弱類型語言,所以其他類型的數據一般都可以直接應用於字符串操作函數中,而自己轉換成字符串類型進行處理

echo substr( "1234567", 2, 4 );  //將字串用函數substr()處理,輸出子字符串 345
echo substr( 123456, 2, 4 );     //將整型用字串函數處理,輸出同樣是字符串 345
echo hello;           //先找hello常量,找不到就會將常名看作是字符串使用

  字符串貌似數組,可以使用中括號語法,但由於無法與真正的數組進行區別,帶來二義性,所以最好使用功能相同的花括號

$str = "lamp";       
echo $str."<br>";       
echo $str{0};//輸出字符串$str中第一個字符l
echo $str[1];//輸出字符串$str中第二個字符a,[]也可以,不過已過時

  在處理變量解析時,如果在字符串中遇到美元符號,解析器會盡可能多地取得後面的字符以組成一個合法的變量名,如果想明示指定名字的結束,用花括號把變量名括起來

    $lamp = array('os'=>'Linux');
  
    //可以解析
    echo "A OS is $lamp[os].";
    
    //不能解析,如果在對關聯數組下標使用引號就必須使用花括號,否則將出錯
    echo "A OS is $lamp['os'].";
    
    //可以解析,如果在對關聯數組下標使用引號就必須使用花括號,否則將出錯
    echo "A OS is {$lamp['os']}.";
    
    //可以解析,注意PHP將數組下標看作常量名,常量不存在時將常量名稱轉為字符串,效率低
    echo "A OS is {$lamp[os]}.";

  [注意]在php中,一個GB2312編碼的漢字占2個字節,一個UTF-8編碼的漢字占3個字節

 

輸出

echo()

void echo ( string $arg1 [, string $... ] )

  echo()函數用來輸出一個或多個字符串,它會輸出所有參數,且不會換行,沒有返回值

  echo不是一個函數, 因此不一定要使用小括號來指明參數,單引號,雙引號都可以。另外,如果想給echo 傳遞多個參數,就不能使用小括號

<?php
echo "Hello World";
$foo = "foobar";
echo "foo is $foo"; // foo is foobar
echo $foo;          // foobar
?>

print()

int print ( string $arg )

  print()函數用來輸出字符串,且總是返回 1

<?php
print("Hello World");
$foo = "foobar";
print "foo is $foo"; // foo is foobar
print $foo;          // foobar
?>
var_dump(echo('123'));//報錯
var_dump(print('123'));//int 1

  echo可以接受多個參數(不可以加括號),而print不可以

<?php
echo '1','2','3';//123
print 'a','b','c';//報錯
?>

exit()

  exit()函數用來輸出一個消息並且退出當前腳本,沒有返回值,同名函數為die()

void exit ([ string $status ] )
void exit ( int $status )

  如果 status 是一個字符串,在退出之前該函數會打印status;如果 status 是一個 integer,該值會作為退出狀態碼,並且不會被打印輸出。退出狀態碼應該在范圍0至254,不應使用被PHP保留的退出狀態碼255。 狀態碼0用於成功中止程序

<?php
exit('0');//0
exit(0);//無返回值
?>

printf

  printf()函數用於輸出格式化字符串

int printf ( string $format [, mixed $args [, mixed $... ]] )

sprintf

  sprintf()函數用於把格式化的字符串寫入一個變量中

string sprintf ( string $format [, mixed $args [, mixed $... ]] )

  字符串轉換格式如下

%%    返回百分比符號
%b    二進制數
%c    依照ASCII值的字符
%d    帶符號十進制數
%e  科學計數法(如1.5e3)
%u    無符號十進制數
%f或%F     浮點數
%o    八進制數
%s    字符串
%x或%X  十六進制數
<?php
$var = 10;
printf("%%,%b,%c,%d,%e,%u,%o,%f,%s,%x",$var,$var,$var,$var,$var,$var,$var,$var,$var,$var);//%,1010, ,10,1.000000e+1,10,12,10.000000,10,a
$result = sprintf("%%,%b,%c,%d,%e,%u,%o,%f,%s,%x",$var,$var,$var,$var,$var,$var,$var,$var,$var,$var);
var_dump($result);//string '%,1010, ,10,1.000000e+1,10,12,10.000000,10,a' (length=44)
?>

 

空格

trim()

  trim()函數用於去除字符串首尾處的空白字符(或者其他字符),過濾後的字符串

string trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )

  此函數返回字符串str去除首尾空白字符後的結果。如果不指定第二個參數,trim() 將去除這些字符:

" " (ASCII 32 (0x20)),普通空格符
"\t" (ASCII 9 (0x09)),制表符
"\n" (ASCII 10 (0x0A)),換行符
"\r" (ASCII 13 (0x0D)),回車符
"\0" (ASCII 0 (0x00)),空字節符
"\x0B" (ASCII 11 (0x0B)),垂直制表符

  charlist為可選參數,過濾字符也可由charlist參數指定。一般要列出所有希望過濾的字符,也可以使用 “..” 列出一個字符范圍

ltrim()

  ltrim函數用於刪除字符串開頭的空白字符(或其他字符)

rtrim()

  rtrim函數用於刪除字符串末端的空白字符(或者其他字符) 

<?php
$text  = "   \t\tHello World a1a1a1    ";
$trimmed = trim($text);
var_dump($trimmed);//string 'Hello World a1a1a1' (length=18)

$trimmed = trim($text, "a1 ");
var_dump($trimmed);//string '        Hello World' (length=13)

$trimmed = trim($text, "1..e ");//string '        Hello Worl' (length=12)
var_dump($trimmed);

$ltrimmed = ltrim($text);
var_dump($ltrimmed);//string 'Hello World a1a1a1    ' (length=22)

$rtrimmed = rtrim($text);
var_dump($rtrimmed);//string '           Hello World a1a1a1' (length=23)
?>

str_pad()

  str_pad()函數使用另一個字符串填充字符串為指定長度

string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

  該函數返回input被從左端、右端或者同時兩端被填充到制定長度後的結果。如果可選的 pad_string 參數沒有被指定,input 將被空格字符填充,否則它將被 pad_string 填充到指定長度

  [注意]如果pad_length的值是負數,小於或者等於輸入字符串的長度,不會發生任何填充

<?php
$input = "Alien";
echo str_pad($input, 10); // 輸出 "Alien     "
echo str_pad($input, 10, "-=", STR_PAD_LEFT); // 輸出 "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH); // 輸出 "__Alien___"
echo str_pad($input, 6 , "___");// 輸出 "Alien_"
?>

 

大小寫

strtolower()

  strtolower — 將字符串轉化為小寫

strtoupper()

  strtoupper — 將字符串轉化為大寫

ucfirst()

  ucfirst — 將字符串的首字母轉換為大寫

ucwords()

  ucwords — 將字符串中每個單詞的首字母轉換為大寫

<?php
$foo = 'hello world!';
var_dump(ucwords($foo));//string 'Hello World!' (length=12)
var_dump(ucfirst($foo));//string 'Hello world!' (length=12)
var_dump(strtoupper($foo));//string 'HELLO WORLD!' (length=12)
var_dump(strtolower($foo));//string 'hello world!' (length=12)
?>

 

HTML

nl2br()

  nl2br — 在字符串所有新行之前插入 HTML 換行標記

string nl2br ( string $string [, bool $is_xhtml = true ] )
<?php
/*
foo isn't<br />
 bar
 */
echo nl2br("foo isn't\n bar");
?>

htmlspecialchars()

string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

  htmlspecialchars - 把指定特殊符號轉換成實體

& (ampersand)            &amp;
" (double quote)        &quot;, unless ENT_NOQUOTES is set
' (single quote)        &#039; or &apos;
< (less than)            &lt;
> (greater than)        &gt;
<?php
$new ="<script>alert(1)</script>";
echo $new;//彈出1
$new = htmlspecialchars("<script>alert(1)</script>");
echo $new; //顯示字符串"<script>alert(1)</script>"
?>
<?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標記和不對引號轉換
?>

htmlentities()

string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

  htmlentities - 將所有的非ASCII碼轉換成對應實體代碼

  htmlentities()和htmlspecialchars()的功能都是轉換字符為HTML字符編碼,特別是url和代碼字符串,防止字符標記被浏覽器執行。htmlentities轉換所有的html標記,htmlspecialchars只格式化& ' " < 和 > 這幾個特殊符號

<?php
$str = "<p>123</p>";
echo $str;//顯示段落123
echo htmlentities($str);//'123'
echo htmlspecialchars($str);//'123'
?>

strip_tags()

  strip_tags — 嘗試返回給定的字符串 str 去除空字符、HTML 和 PHP 標記後的結果

string strip_tags ( string $str [, string $allowable_tags ] )

  使用可選的第二個參數allowable_tags指定不被去除的字符列表

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);//'Test paragraph. Other text'
echo "\n";
echo strip_tags($text, '<p>').'<br>';//<p>Test paragraph.</p> Other text
$text = '<div><b>123</b></div>';
echo strip_tags($text);//'123'
?>

addslashes()

  addslashes — 使用反斜線引用字符串,返回字符串,該字符串為了數據庫查詢語句等的需要在某些字符前加上了反斜線。這些字符是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字符)

string addslashes ( string $str )
<?php
$str = "Is your name O'reilly?";
echo addslashes($str);// "Is your name O\'reilly?"
?>

stripslashes()

  stripslashes — 反引用一個引用字符串

string stripslashes ( string $str )
<?php
$str = "Is your name O\'reilly?";
echo stripslashes($str);//"Is your name O'reilly?"
?>

 

格式化

strrev()

  strrev — 反轉字符串

string strrev ( string $string )
<?php
echo strrev("Hello world!"); // 輸出 "!dlrow olleH"
?>

strlen()

  strlen — 獲取字符串長度

int strlen ( string $string )
<?php
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';
echo strlen($str); // 7
?>

md5()

  md5 — 計算字符串的 MD5 散列值

string md5 ( string $str [, bool $raw_output = false ] )

  如果可選的raw_output被設置為TRUE,那麼MD5報文摘要將以16字節長度的原始二進制格式返回

<?php
$str = 'apple';
if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
    echo "Would you like a green or red apple?";
}
?>

 

比較

strcmp()

  strcmp — 字符串比較,如果 str1 小於 str2 返回 < 0; 如果 str1 大於 str2 返回 > 0;如果兩者相等,返回 0

int strcmp ( string $str1 , string $str2 )
<?php
$var1 = "Hello";
$var2 = "hello";
if (strcmp($var1, $var2) !== 0) {
    echo '$var1 is not equal to $var2 in a case sensitive string comparison';
}
?>

strncmp()

  strncmp — 限定字符串長度的字符串比較

int strncmp ( string $str1 , string $str2 , int $len )

  如果 str1 小於 str2 返回 < 0; 如果 str1 大於 str2 返回 > 0;如果兩者相等,返回 0

<?php 
echo strncmp("xybc","a3234",0); // 0 
echo strncmp("xybc","a3234",1); // 1 
?>

strcasecmp()

  strcasecmp — 字符串比較(不區分大小寫),如果 str1 小於 str2 返回 < 0; 如果 str1 大於 str2 返回 > 0;如果兩者相等,返回 0

int strcasecmp ( string $str1 , string $str2 )
<?php
$var1 = "Hello";
$var2 = "hello";
if (strcasecmp($var1, $var2) == 0) {
    echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
?>

strnatcmp()

  strnatcmp — 使用自然排序算法比較字符串

int strnatcmp ( string $str1 , string $str2 )

  如果 str1 小於 str2 返回 < 0; 如果 str1 大於 str2 返回 > 0;如果兩者相等,返回 0

<?php
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
usort($arr1, "strcmp");
print_r($arr1);//Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png )
usort($arr2, "strnatcmp");//Array ( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png )
print_r($arr2);
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved