|
答:在php中連接兩個(gè)字符串可以直接使用“.”操作符號(hào),例如$newStr="Zhang"."san",在Java中是使用“+”操作符號(hào),不要混淆。
2,如何計(jì)算一個(gè)字符串的長(zhǎng)度?
答:$str="test";$length=strlen($str);即使用strlen(str)函數(shù)。
3,如何按照某個(gè)分割符拆分一個(gè)字符串?
答:使用explode(delim,str)函數(shù),例如$arr=explode("::","a::bdf::dfsdf");該函數(shù)返回一個(gè)數(shù)組。在Java中可以使用String對(duì)象的split函數(shù)。
4,如何獲取http請(qǐng)求中的參數(shù)值?
答:如果為GET請(qǐng)求,使用$_GET[paramName],如果為POST請(qǐng)求,使用$_POST[paramName],例如:$email=$_POST["usermail"]。
5,php中是否可以像Java一樣使用類?
答:可以,但是機(jī)制和具體使用方式可能不太一樣。
6,是否可以舉一個(gè)使用for循環(huán)的例子?
答:
復(fù)制代碼 代碼如下:
for($i=0;$i<100;$i++){
echo $i;
}
7,如何在Javascript中取得php中的變量?
答:例子如下:
復(fù)制代碼 代碼如下:
<?php
$username=$_POST["username"];
?>
<script>
var username="<?php echo $username ?>";
</script>
8,如何刪除一個(gè)文件?
答:使用unlink(filename)函數(shù),當(dāng)然程序必須有權(quán)限刪除該文件才可以,我們所使用的php虛擬空間可能對(duì)一
些文件是有限制的,所以可能會(huì)出現(xiàn)權(quán)限錯(cuò)誤。
9,我定義了一個(gè)類User,聲明了該類的一個(gè)方法getName(),為什么我使用$user=new User;$name=$user.getName()會(huì)報(bào)錯(cuò)?
答:注意php中對(duì)類成員的引用方式,上面的引用應(yīng)該為$name=$user->getName(),即使用->符號(hào),而不是
Java中使用的“.”號(hào)。
10,我申請(qǐng)了一個(gè)不帶mysql支持的php虛擬空間,請(qǐng)問(wèn)我該怎么存取應(yīng)用數(shù)據(jù)啊?
答:存取數(shù)據(jù)不一定要使用數(shù)據(jù)庫(kù),使用文件系統(tǒng)也是不錯(cuò)的,另外即使使用數(shù)據(jù)庫(kù),也不一定非要使用像mysql
、oracle等的這樣的數(shù)據(jù)庫(kù),也可以使用一些文本數(shù)據(jù)庫(kù),例如txtsql,這樣的話就不必去租用費(fèi)用比較高的mysql
數(shù)據(jù)庫(kù)空間了。
11,我申請(qǐng)了一個(gè)不帶數(shù)據(jù)庫(kù)的php空間,我現(xiàn)在的應(yīng)用數(shù)據(jù)是存在文件中的,但是這會(huì)有一個(gè)安全問(wèn)題,就是
訪問(wèn)者可以通過(guò)url查看到這些文件的內(nèi)容,我怎么保護(hù)這些文件內(nèi)容呢?
答:建議的方式有三種:
1)如果你租用的php空間允許設(shè)置目錄的http訪問(wèn)權(quán)限,那么設(shè)置一下即可。
2)可以對(duì)文件內(nèi)容進(jìn)行加密,那么即使被下載,也沒(méi)有多大的價(jià)值。
3)可以將這些文件的后綴改為.php,即使用php文件存儲(chǔ)應(yīng)用信息,這樣的話,訪問(wèn)者就無(wú)法通過(guò)http訪問(wèn)到
這些文件的真實(shí)內(nèi)容了,當(dāng)然這些文件中的內(nèi)容必須是正確的php語(yǔ)法,而且內(nèi)容要使用php語(yǔ)法中的隱藏語(yǔ)法
將信息隱藏起來(lái),例如一個(gè)存放帳號(hào)信息的文件如下:
users.php
復(fù)制代碼 代碼如下:
<?php
/*
:::user1:password1::user2:password2::user3:password3:::
*/
?>
12, 如何對(duì)一個(gè)字符串進(jìn)行轉(zhuǎn)碼?
使用php的iconv函數(shù),簽名為:
$str=iconv(fromEncode,toEncode,str);
例如:
$str="php字符串轉(zhuǎn)碼";
$str=iconv("utf-8","gbk",$str);//將字符串從utf-8格式轉(zhuǎn)換為gbk格式
轉(zhuǎn)碼是很重要的一個(gè)問(wèn)題,例如目前許多博客提供的rss都是utf-8返回的,因此需要通過(guò)轉(zhuǎn)化才能正確顯示。
13,如何讀取一個(gè)網(wǎng)頁(yè)的HTML內(nèi)容?
php中文件的概念和Java中文件流的概念是類似的,許多文件讀取的函數(shù),其接受的輸入流不僅僅是本地文件系統(tǒng),也可以是網(wǎng)絡(luò)文件,下面介紹其中的一種方式:
復(fù)制代碼 代碼如下:
function getRssContent($url){
$handle = fopen ($url, "rb");
$contents = "";
$count=0;
do {
$data = fread($handle, 1000000);
$count++;
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
return $contents;
}
14,php中如何操作mysql數(shù)據(jù)庫(kù)?
為了方便初學(xué)者能夠上手mysql的操作,我介紹一些常用的操作:
1)數(shù)據(jù)庫(kù)連接與關(guān)閉
復(fù)制代碼 代碼如下:
$dbhost = "";
$dbuser = "";
$dbpw = "";
$dbname = "";
$link = mysql_connect($dbhost, $dbuser, $dbpw) or die("Could not connect: ".mysql_error());
mysql_select_db($dbname);
...//此處是對(duì)數(shù)據(jù)庫(kù)具體的操作,后面的例子不再寫數(shù)據(jù)庫(kù)的連接和關(guān)閉操作
mysql_close($link);
2)向表中插入新數(shù)據(jù)
mysql_query("insert into mytable(id,name) values('".$id."','".$name."')");
上面是向mytable表的id和name字段插入一條數(shù)據(jù)。
3)從表中查詢數(shù)據(jù)
$rs=mysql_query("select * from mytable mt where mt.id='001'");
4)從表中刪除數(shù)據(jù)
$rs=mysql_query("delete from mytable mt where mt.id='001'");
5)對(duì)于復(fù)雜查詢,例如select子句,mysql3.22以下版本不支持,因此許多時(shí)候php編寫復(fù)雜sql時(shí)會(huì)得不到結(jié)果,這其實(shí)不是php的錯(cuò),而是mysql的版本較低的緣故。
6)對(duì)于select返回的結(jié)果集,可以如下操作:
對(duì)于返回一條結(jié)果,可以如下:
復(fù)制代碼 代碼如下:
$row=mysql_fetch_object($rs);
$id=$row->id;//id是字段名稱,或者字段的別名,以下同
$title=$row->title;
$asker=$row->asker;
對(duì)于返回多條結(jié)果,可以如下:
復(fù)制代碼 代碼如下:
while($row=mysql_fetch_object($rs)){
$id=$row->id;
$title=$row->title;
$asker=$row->asker;
}
當(dāng)然還有方法可以使得返回的結(jié)果為數(shù)組,訪問(wèn)也可以根據(jù)字段的位置index值訪問(wèn),這個(gè)可以查詢相關(guān)手冊(cè),就不介紹了。
15,如果你的工程中使用HTML在線編輯器,那么FCKEditor可能是比較不錯(cuò)的一個(gè)選擇,F(xiàn)CKEditor可以自己去網(wǎng)上下載,下載的地方很多,我介紹一下調(diào)用方式:
首先將FCKEditor的目錄放到網(wǎng)站根目錄下,假設(shè)你在網(wǎng)站根目錄的/modules/cms/目錄下的edit.php中要引用FCKEditor,具體代碼如下:
復(fù)制代碼 代碼如下:
<?php
$sBasePath = "../../fckeditor/";//fckeditor是FCKEditor的目錄
$oFCKeditor = new FCKeditor('content') ;
$oFCKeditor->BasePath= $sBasePath ;
$oFCKeditor->Value="" ;
$oFCKeditor->Width="666px";
$oFCKeditor->Height="300px"
?>
<div>
<?php $oFCKeditor->Create();?>
</div>
16,如何在session中存儲(chǔ)數(shù)據(jù)?
首先要啟動(dòng)session機(jī)制,除了apache本身做一定的設(shè)置之外,在使用session的php頁(yè)面中,要先調(diào)用session_start()方法,表示在本頁(yè)面使用session。在session中存儲(chǔ)數(shù)據(jù)的具體方式如下:
復(fù)制代碼 代碼如下:
<?php
session_start();
$username="admin";
session_register("username");
?>
[code]
那么在其它的頁(yè)面,想取得session中的用戶名,如下:
[code]
<?php
$username=$_SESSION["username"];
?>
同理,要判斷當(dāng)前訪問(wèn)的用戶是否已經(jīng)登錄也可以通過(guò)上面的方式進(jìn)行:當(dāng)用戶登錄之后,在session之中注冊(cè)用戶名,在需要session控制的php頁(yè)面中加入判斷,例如:
復(fù)制代碼 代碼如下:
if(!session_is_registered("username")){
header("Location:login.php");
}
上面是通過(guò)判斷session中是否注冊(cè)了username變量來(lái)實(shí)現(xiàn)的。
17,php中如何定義類及其成員屬性與操作,又如何調(diào)用?
直接舉一個(gè)例子,應(yīng)該可以說(shuō)明上面的問(wèn)題:
定義一個(gè)字符串處理工具類:StringUtils
復(fù)制代碼 代碼如下:
<?php
class StringUtils{
function StringUtils(){
}
function getLength($str){
return strlen($str);
}
}
?>
在php頁(yè)面中調(diào)用方式為:
復(fù)制代碼 代碼如下:
<?php
include 'classes/com/xxx/StringUtils.php';
$length=StringUtils::getLength("abcde");
//或者
$instance=new StringUtils;
$length=$instance->getLength("abcde");
?>
對(duì)于一個(gè)類的方法,一般有兩種調(diào)用方式,一種是當(dāng)作靜態(tài)方法進(jìn)行調(diào)用,通過(guò)::連接符,一種是當(dāng)作實(shí)例方法進(jìn)行調(diào)用,通過(guò)->連接符。雖然調(diào)用可以使用兩種方式調(diào)用,但是實(shí)際中一個(gè)類的方法是否為靜態(tài)方法,往往是已經(jīng)邏輯上定義好的,因此每一個(gè)方法,往往只使用某種方式調(diào)用,例如一個(gè)服務(wù)類中的方法,基本上應(yīng)該都是實(shí)例方法,而一個(gè)工具類中的方法,基本上都是類方法或者說(shuō)靜態(tài)方法,例如:
復(fù)制代碼 代碼如下:
<?php
class UserService{
var $dbhost = "";
var $dbuser = "";
var $dbpw = "";
var $dbname = "";
function UserService(){
}
function login($username,$password){
$link = mysql_connect($this->dbhost, $this->dbuser, $this->dbpw) or die("Could not connect: ".mysql_error());
mysql_select_db($this->dbname);
$rs=mysql_query("select count(*) as value from cieqas_users where userid='".$username."' and password='".$password."'");
$row=mysql_fetch_object($rs);
$value=$row->value;
mysql_close($link);
settype($value,"integer");
if($value<=0){
return false;
}
return true;
}
?>
另外,在實(shí)例方法中調(diào)用$this,才有實(shí)際的意義。
18,如何設(shè)置一個(gè)變量的類型?
php可以算作是弱類型語(yǔ)言的一種,不需要對(duì)變量進(jìn)行強(qiáng)制類型定義,例如:
$username="admin";
$length=0;
$obj=new MyClass;
許多時(shí)候,需要將一個(gè)字符串變量轉(zhuǎn)換為int變量,或者反過(guò)來(lái)等等,該如何操作呢?其實(shí)可以使用settype方法,該方法可以指定變量的類型,簽名如下:
settype(var,type)
其中類型的值有boolean(bool)、integer(int)、float、string、array、object、null
例如:
$state="0";
settype($state,"int");
if($state==0){
...
}
19,如何將一個(gè)數(shù)組進(jìn)行反向排列?
通過(guò)array_reverse方法實(shí)現(xiàn),例如:
復(fù)制代碼 代碼如下:
$arr=array();
$arr[0]=1;
$arr[1]=2;
$arr2=array_reverse($arr);
20,在php中如何將一個(gè)時(shí)間正確的進(jìn)行顯示?
在php中通過(guò)time()方法返回自從 Unix 新紀(jì)元(格林威治時(shí)間 1970 年 1 月 1 日 00:00:00)到當(dāng)前時(shí)間的秒數(shù),那么如何將該時(shí)間正確的顯示為本地正確時(shí)間,許多時(shí)候我們都使用php中的setLocale方法,指定當(dāng)前的地域,但是我們往往得不到正確的時(shí)間,給大家介紹一個(gè)其它的解決方式,就是通過(guò)Javascript與php結(jié)合去解決,例如:
復(fù)制代碼 代碼如下:
var time="<?php echo time() ?>";
var time=parseInt(time);
var date=new Date(time*1000);
var pattern="yyyy-MM-dd hh:mm:ss";
var df=new SimpleDateFormat();
var str=df.format(date);
document.write(str);
因此,可以將php中time()的值傳遞給Javascript,并做為Date對(duì)象的參數(shù),然后通過(guò)Javascript開(kāi)源類庫(kù)JsJava的處理,即可。
21,php在當(dāng)今是非常流行的一門語(yǔ)言,到目前為止已經(jīng)形成了大量的函數(shù)庫(kù),例如處理字符串的、數(shù)學(xué)的、XML的、文件的、SOAP的、網(wǎng)絡(luò)的等等,不過(guò)其在面向?qū)ο蠓矫妫€有一定程度的欠缺,然而也并不是說(shuō)非要面向?qū)ο蟛拍芩闶且婚T如何如何的語(yǔ)言,然而在實(shí)際的網(wǎng)站或者項(xiàng)目開(kāi)發(fā)中,僅僅是大量的函數(shù)庫(kù)有些時(shí)候感覺(jué)不是特殊的方便,尤其是有些時(shí)候,業(yè)務(wù)需要我們抽象出架構(gòu)層次以及各個(gè)對(duì)象,這個(gè)時(shí)候定義一套合適的業(yè)務(wù)類庫(kù)就比較合適了,畢竟當(dāng)我們面對(duì)更高業(yè)務(wù)層面的開(kāi)發(fā)時(shí),我們需要封裝的層次更高,那么這個(gè)時(shí)候類和對(duì)象就提上日程了,不過(guò)目前使用php的各個(gè)函數(shù),感覺(jué)也是非常方便的,而且非常強(qiáng)大,這又讓我多少有些埋怨類似Java這樣的面向?qū)ο蟮恼Z(yǔ)言,做什么邏輯都要借助一大堆類來(lái)實(shí)現(xiàn),看來(lái)語(yǔ)言之間是需要互相學(xué)習(xí)的,而不是互相攻擊,解決問(wèn)題促進(jìn)行業(yè)和社會(huì)的發(fā)展才是最根本的。
php技術(shù):PHP初學(xué)者常見(jiàn)問(wèn)題集合 修正版(21問(wèn)答),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。