PHP如何判断字符串是否包含特定值

时间:2012-06-30 22:22:53

标签: php

在我的SQL数据库中,我有一个查询,它将多行中的值转换为单个连接字符串。

id    |    image_filename    |    slides    |    languages    |    types
-------------------------------------------------------------------------
10    |    filename.jpg      |    55,4     |        1         |    TN,CQ

在PHP中,我试图查看此图像与哪些幻灯片相关联。如果已关联,则会选中该复选框。

$isChecked = (strpos($slide,"5") !== false) ? " checked=\"checked\"" : "";

问题是上面的语句将返回true,因为其中包含5。需要做的是返回 false ,因为5不等于55。

如何在PHP中创建一些内容来检查每个逗号前的值,看看它是否与我可以指定的某个字符串匹配。

谢谢!

3 个答案:

答案 0 :(得分:3)

您应该explode($slide)然后转换为整数

$parts = explode(',', $slide);
if(intval($parts[0]) == 55) {
    // Do stuff
}

答案 1 :(得分:2)

比较逗号连接的实际值!

$isChecked = in_array("5",explode(",",$slide))!=false?" checked=\"checked\"":"";

请参阅explode

编辑:刚刚注意到你只想在逗号之前检查值。这实际上比从字符串创建数组更快:

$isChecked = "5"==strstr($slide,',',true)?" checked=\"checked\"":"";

假设你有PHP 5.3+。见strstr

答案 2 :(得分:1)

您应该使用MySQL FIND_IN_SET()函数在RDBMS级别可靠地执行此操作。请参阅this SO question,其答案说明了您的目标。