2011-04-13 143 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