我有以下PHP IF语句
<?php
if ($crs_cat1 == "Business"){
$catimage ="businessImage.png";
}
else if ($crs_cat1 == "Leadership") {
$catimage = "leadershipImage.png";
}
else if ($crs_cat1 == "Media and Design") {
$catimage = "mediadesignImage.png";
}
else if ($crs_cat1 == "Web Development") {
$catimage = "webdevelopmentImage.png";
}
else if ($crs_cat1 == "Mobile Development") {
$catimage = "mobileDevelopment.png";
}
else if ($crs_cat1 == "Project Management") {
$catimage = "business5.png";
}
else if ($crs_cat1 == "Databases and Business Intelligence") {
$catimage = "businessAnalysis.png";
}
else if ($crs_cat1 == "IT Service Management") {
$catimage = "itService.png";
}
else if ($crs_cat1 == "Business Analysis and Agile") {
$catimage = "businessAnalysis.png";
}
else if ($crs_cat1 == "Network Security and OS") {
$catimage = "networkSecurity.png";
}
else if ($crs_cat1 == "Virtualization and Cloud Computing") {
$catimage = "virtualization.png";
}
else if ($crs_cat1 == "Software Quality & Testing Tools") {
$catimage = "testing.jpg";
}
else if ($crs_cat1 == "Microsoft") {
$catimage = "microsoft2.png";
}
else if ($crs_cat1 == "%Adobe%") {
$catimage = "adobe.png";
}
else if ($crs_cat1 == "IBM") {
$catimage = "ibm.jpg";
}
else {
$catimage = "negotiation.png";
}
?>
在if语句中,我希望更像是商业或领导,就某种意义而言,结果不一定非常精确,它必须足够相似。例如,如果==到adobe,标题是adobe dreamweaver,那么它应该填充
答案 0 :(得分:0)
你可以在&#34; Business&#34;上做一个简单的子串匹配。或&#34;领导力&#34;用strpos。这将发现任何&#34; Business&#34;字符串变量中的子字符串。
if (strpos($crs_cat1, "Business") !== false) {
$catimage = "businessAnalysis.png";
}
请确保您使用&#34;!== false&#34;,而不是&#34; true&#34;或&#34;!false&#34;或其他任何因为返回值实际上是类型依赖的。
有关详细信息,请参阅http://php.net/strpos。
另外,值得注意的是stripos
将搜索子字符串而不用担心这种情况(不区分大小写)。 http://php.net/stripos
答案 1 :(得分:0)
我建议你使用stripos()或preg_match()。你也可以使用strpos()如果你知道你所匹配的文本的情况肯定会匹配,IE商业,而不是商业或商业
如果您可以敏感地匹配案例 ,则可以节省一些执行时间,但如果是用户输入,则应该对不敏感地匹配案例。
与stripos()匹配案例敏感:
if(strpos($crs_cat1, 'Business') !== FALSE){ //code }
将案例敏感与正则表达相匹配:
if(preg_match('/Business/', $crs_cat1)){ //code }
或者,以匹配案例 - INsensitvely(通常建议):
if(stripos($crs_cat1, 'Business') !== FALSE){ //code }
或者,将case-INsensitvely与正则表达式匹配:
if(preg_match('/business/i', $crs_cat1)){ //code }
通常,如果你在一个简单的字符串上匹配,就像在你的例子中一样,你应该坚持使用strpos / stripos。但是,如果你匹配任何复杂类型的匹配,preg_match是很有用的。
我最近在stripos和preg_match之间进行了性能测试,以确认stripos()对于简单的单词匹配仍然更快。
stripos()10000000次迭代:
6.687420129776s
preg_match()10000000次迭代:
9.2206559181213s
RoCksFrow