無亂碼截取中文字符
/** * utf8編碼字符串截取無亂碼 * @param $str * @param $start * @param $len * @return string */ function sub_str($str, $start, $len){ //數組字符 $str_array = preg_split('//u',$str,-1,PREG_SPLIT_NO_EMPTY); $get_array = array_splice($str_array,$start,$len); return join("",$get_array); } $str='天氣真好呀'; echo sub_str($str,3,1); echo mb_substr($str,3,1);
寫出下列幾個預定義全局變量的作用
$_SERVER['DOCUMENT_ROOT']//當前運行腳本所在的文檔根目錄
$_SERVER['HTTP_HOST ']//當前請求的 Host: 頭部的內容
$_SERVER['REMOTE_ADDR']//正在瀏覽當前頁面用戶的 IP 地址
$_SERVER['HTTP_REFERER']//鏈接到當前頁面的前一頁面的 URL 地址
$_SERVER['SERVER_NAME']//當前運行腳本所在服務器主機的名稱
$_FILES //包含有所有上傳的文件信息 S_FILES['userfile']['name']//客戶端機器文件的原名稱
$_FILES['userfile']['type']//文件 MIME 類型,如果瀏覽器提供此信息的話,如“image/gif”。
$_FILES['userfile']['size']//已上傳文件的大小,單位為字節
$_FILES['userfile']['tmp_name']//文件被上傳后在服務端儲存的臨時文件名
$_FILES['userfile']['error']//和該文件上傳相關的錯誤代碼
用最少的代碼寫一個求 3 值最大值的函數
function getMax($a, $b, $c) { return ($a > $b) ? ($a > $c ? $a : $c) : ($b > $c ? $b : $c); } echo getMax(2, 7, 5);
簡述 POST 和 GET 傳輸的最大容量分別是多少
POST 根據你 php.ini 文件配置(默認是 8M)
GET 的話大小限制在 2KB
差異:post是通過實體數據提交,可以通過表單提交大量信息。get數據通過URL參數 提交,傳輸的數據有限制。
不使用第三個變量交換兩個變量的值(厲害)
/* 不使用第三個變量交換兩個變量的值 */ // ================方法一================== $a = "PHP"; $b = "MySQL"; echo '$a='.$a.'<br />'; echo '$b='.$b.'<br />'; list($a,$b) = array($b,$a); echo '$a='.$a.'<br />'; echo '$b='.$b.'<br />'; echo "<hr />"; // ================方法二================== $a = "PHP"; $b = "MySQL"; echo '$a='.$a.'<br />'; echo '$b='.$b.'<br />'; $a = $a.'&'.$b;//使用&連接兩個字符串 // 根據&進行字符串分割 $b = explode('&', $a); $a = $b[1]; $b = $b[0]; echo '$a='.$a.'<br />'; echo '$b='.$b.'<br />';
請說明 php 中傳值與傳引用的區別。什么時候傳值什么時候傳引用?
變量默認總是傳值賦值。
那也就是說,當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。這意味着,例如,當一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。
PHP 也提供了另外一種方式給變量賦值:引用賦值。
這意味着新的變量簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變量。改動新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&
符號加到將要賦值的變量前(源變量),reference 傳送的是變量的地址而非它的值。
對象默認是傳引用。
對於較大的數據,傳引用比較好,這樣可以節省內存的開銷。
將 1234567890 轉換成 1,234,567,890 每 3 ���用逗號隔開的形式
//第一種 $str = 1234567890; $r_str= strrev($str); $array_str =str_split($r_str,3);//返回數組 echo strrev(implode(',',$array_str)); //第二種 $str ='1234567890'; function str($str) { // 反轉字符串,得到0987654321 $str = strrev($str); // 使用逗號分割字符串,得到098,765,432,1, $str = chunk_split($str,3,',');//返回字符串 // 再次反轉字符串,得到,1,234,567,890 $str = strrev($str); // 去掉左邊的",",得到1,234,567,890 $str = ltrim($str,','); return $str; } echo str($str);
ort()、assort()、和 ksort() 有什么分別?它們分別在什么情況下使用?
sort(),根據數組中元素的值,以英文字母順序排序,索引鍵會由 0 到 n-1 重新編號。主要是當數組索引鍵的值無關緊要時用來把數組排序。
assort(),PHP 沒有 assort() 函式,所以可能是 asort() 的筆誤。
asort(),對數組進行排序,數組的索引保持和單元的關聯。主要用於對那些單元順序很重要的結合數組進行排序。
ksort(),根據數組中索引鍵的值,以英文字母順序排序,特別適合用於希望把索引鍵排序的關聯數組。
什么是可變變量
一個可變變量獲取了一個普通變量的值作為這個可變變量的變量名
$a = 'hello'; $$a = 'world'; echo "$a ${$a}"; echo "$a $hello";
執行程序段<?php echo 8%(-2) ?>
將輸出%為取模運算,輸出 0$a % $b
其結果的正負取決於 $a 的符號。
echo ((-8)%3)."<br />";//輸出 -2 echo (8%(-3))."<br />";//輸出 2
數組函數 arsort 的作用是_;語句 error_reporting(2047)的作用是_
arsort:對數組進行逆向排序並保持索引關系
error_reporting(2047)的作用 report All errors and warnings
以 Apache 模塊的方式安裝 PHP,在文件 http.conf 中首先要用語句_動態裝載 PHP模塊,然后再用語句_使得 Apache 把所有擴展名為 php 的文件都作為 PHP 腳本處理。
LoadModule php5_module "c:/php/php5apache2.dll";
AddType application/x-httpd-php .php
一個函數的參數不能是對變量的引用,除非在 php.ini 中把____設為 on.
allow_call_time_pass_reference :是否啟用在函數調用時強制參數被按照引用傳遞,默認關閉。
echo count("abc")
; 輸出什么
輸出 1
count :計算數組中的單元數目或對象中的屬性個數,通常是一個 array,任何其它類型都只有一個單元。
對於對象,如果安裝了 SPL,可以通過實現 Countable 接口來調用 count()。該接口只有一個方法 count(),此方法返回 count() 函數的返回值。
如果 var 不是數組類型或者實現了 Countable 接口的對象,將返回 1,有一個例外,如果 var 是 NULL 則結果是 0。
寫 5 個不同的自己的函數,來獲取一個全路徑的文件的擴展名,允許封裝 php 庫中已有的函數(厲害了我的姐)
/* 寫 5 個不同的自己的函數,來獲取一個全路徑的文件的擴展名,允許封裝 php 庫中已有的函數。(新浪) */ // 方法一 function ext_name1($path){ $path_info = strrchr($path, '.');//.php return ltrim($path_info,'.'); } // 方法二 function ext_name2($path){ $path_info = substr($path,strrpos($path, '.')); return ltrim($path_info,'.'); } // 方法三 function ext_name3($path){ $path_info = pathinfo($path); return $path_info['extension']; } // 方法四 function ext_name4($path){ $arr = explode('.', $path); return $arr[count($arr)-1]; } // 方法五 function ext_name5($path){ $pattern = '/^[^\.]+\.([\w]+)$/'; //獲取數組的第二個元素
return preg_replace($pattern, '${1}', basename($path)); } // 實例 $path = str_replace('\\', '/', __FILE__); echo "$path<br />"; echo ext_name1($path);echo "<br />"; echo ext_name2($path);echo "<br />"; echo ext_name3($path);echo "<br />"; echo ext_name4($path);echo "<br />"; echo ext_name5($path);echo "<br />";
PHP 的意思,它能干些什么
PHP( Hypertext Preprocessor,超文本預處理器的字母縮寫)是一種被廣泛應用的開放源代碼的多用途腳本語言,它可嵌入到 HTML 中,尤其適合 web 開發。
PHP 主要是用於服務端的腳本程序,因此可以用 PHP 來完成任何其它的 CGI 程序能夠完成的工作,例如收集表單數據,生成動態網頁,或者發送/接收Cookies。但 PHP 的功能遠不局限於此。
PHP 腳本主要用於以下三個領域:
- 服務端腳本。這是 PHP 最傳統,也是最主要的目標領域。
- 命令行腳本。可以編寫一段 PHP 腳本,並且不需要任何服務器或者瀏覽器來運行它。通過這種方式,僅僅只需要 PHP 解析器來執行。
- 編寫桌面應用程序。
a=′abcdef′;請取出a 的值並打印出第一個字母
echo $a{0} 或 echo $a[0](當做數組訪問)
$a = in_array('01',array('1')) == var_dump('01' == 1),$a得值 FALSE
/* 運行以下程序,$a 的值是多少? */ $a = "hello"; $b = &$a; unset($b); $b = "world"; echo $a,$b; //hello
val=max(′string′,array(2,5,7),42);val 值為
array(2,5,7)
max 用法示例如下:
echo max(1,3,5,6,7);//7 echo "<br />"; echo max(array(2,4,5));//5 echo "<br />"; echo max(0,'hello');//0 echo "<br />"; echo max('hello','0');//hello echo "<br />"; echo max(-1,'hello');//hello echo "<br />"; //對於多個數組,max從左向右比較 //因此在本例中:2 == 2,但是4 < 5 $val = max(array(2,4,8),array(2,5,7));//array(2,5,7) var_dump($val); echo "<br />"; // 如果同時給出數組和非數組作為參數,則總是將數組視為最大值返回 $val = max('string', array(2, 5, 7), 42); var_dump($val);
Switch 完整語法和注意事項
使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊,case只能處理整數,或者能像整數一樣運算的類型,比如char,使用時case 后用'',注意 break不能少,default是為了處理一些之前沒有包含到的情況,這樣更為安全。
簡述 GBK、GB2312、BIG5 、GB18030
GB2312 支持的漢字較少,GBK 是相比 GB2312 漢字更為豐富,包括全部中日韓漢字,GB18030 相比 GBK 增加了一些少數名族漢字漢字庫更為多樣,但是常人很難用到,一般簡體中文使用 GBK 而繁體中文使用 BIG5。
計算某段字符串中某個字符出現的次數(例如 : gdfgfdgd59gmkblg 中 g 的次數)
$text = 'gdfgfdgd59gmkblg'; echo substr_count ( $text,'g');
以下語句可能存在錯誤,如果存在錯誤請指出什么錯誤(每個語句單獨考慮)
print_r $val = 333;
// error,print_r 是一個函數,需加上括號,如果是 print 則可以print_r($val = 333);
// 正確$a += ($b = 4) + 5;
// notice,a未定義
foo[bar] = 'enemy';可以正確運行// Notice: Use of undefined constant a - assumed 'bar',最好 bar 加上引號
function x($a = "1", $b){}`// 無,但給參數默認值應盡量從右向左
程序運算
$a1 = null; $a2 = false; $a3 = 0; $a4 = ''; $a5 = '0'; $a6 = 'null'; $a7 = array(); $a8 = array(array()); echo empty($a1) ? 'true' : 'false';//ture echo '<br />'; echo empty($a2) ? 'true' : 'false';//ture echo '<br />'; echo empty($a3) ? 'true' : 'false';//ture echo '<br />'; echo empty($a4) ? 'true' : 'false';//ture echo '<br />'; echo empty($a5) ? 'true' : 'false';//ture echo '<br />'; echo empty($a6) ? 'true' : 'false';//false echo '<br />'; echo empty($a7) ? 'true' : 'false';//ture echo '<br />'; echo empty($a8) ? 'true' : 'false';//false