2011-04-13 141 views
1

開始有詢問的方式,如果一個變量...if語句變量與

這個問題我已經是在一個數據庫中,我有兩個圖像文件和音頻文件我想聲明,如果說開始如果$文件以「audio/.......」開頭

回答

3
if (strpos($file,'audio/') === 0) 
{ 
    echo "audio/ found at start"; 
} 
+2

'strpos()'返回'false',如果'$ needle'沒有在字符串中找到。你必須使用'===',因爲'(false == 0)=== true' – KingCrunch 2011-04-13 10:15:55

+0

@King:True,updated – 2011-04-13 10:17:31

2

您可以使用substr()來獲取字符串的一部分,然後您可以檢查它是否等於'audio/'

if (substr($file, 0, 6)=='audio/') { 
} 
1

有沒有這樣的內置函數,但你可以使用字符串比較等效行爲

if (strncmp('audio/', $file, 6) === 0) { 
    // do something 
} 

還是比較常見的,但不太高性能的解決方案

if (substr($file, 0, 6) === 'audio/') { 
    // do something 
} 

然而,你應該能夠從數據庫中選擇相應的行

WHERE column LIKE 'audio/%' 
+0

+1的'strncmp'的解決方案,這似乎是更清潔。我不會說這是更高性能,我們正在談論6個字符:)。 – kapa 2011-04-13 10:16:05

+0

@bazmegakapa:它在解釋器處理它的方式上更具有表現力,而不是它能夠以多快的速度輸入它);有人說,它比'substr()'解決方案快大約20%。我沒有對自己進行測試,當然我們正在談論很短的時間。但是,我認爲它至少要知道:) – KingCrunch 2011-04-13 10:19:37

+0

我不是在談論打字速度:)。我剛纔說過,當你必須從一個短串中得到6個字符時,這並不重要。 – kapa 2011-04-13 10:23:30

0
if (substr($file,0,strlen($start))===$start) ... 

if (substr_compare($file,$start,0,strlen($start),true)==0) ... 
+0

你試過這個嗎? – kapa 2011-04-13 10:19:25

0

爲什麼不使用SUBSTR像

if (substr($file,0,5) == "audio") 

+0

他正試圖獲取'audio'目錄中的文件。如果它們的文件名以'audio'開頭(例如audio1.wav)並且名稱以'audio'開頭的文件(例如audiofos/x.jpg),那麼這將得到沒有dir的簡單文件。 – kapa 2011-04-13 10:26:18